RabbitMQ消息队列的测试点

消息队列技术是分布式应用间交换信息的一种技术。

消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。

通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。

RabbitMQ消息队列的测试点

1、RabbitMQ

  • RabbitMQ是一个消息代理和队列服务器
  • Producer生产者
  • Connection 连接 (本质是 TCP 连接)
  • Channel 信道
  • Exchange 交换机
  • Queue 队列
  • RoutingKey 路由键
  • Consumer 消费者
  • Ack 消息确认
  • onMessage 回调函数

RabbitMQ消息队列的测试点

PS:为什么要用信道

多个线程需要从 RabbitMQ 中消费消息,或者生产消息,每个线程把持一个信道,复用了 Connection的 TCP 连接,可以在产生性能瓶颈的情况下有效地节省 TCP 连接资源。

交换机类型

  • Direct:如果消息的routing key与binding的routing key直接匹配的话,消息将会路由到该队列上;
  • Topic:如果消息的routing key与binding的routing key符合通配符匹配的话,消息将会路由到该队列上;
  • Fanout:不管消息的routing key和参数表的头信息/值是什么,消息将会路由到所有队列上。

2、在架构中的用法

异步处理:消息推送,用户注册。

发布订阅:状态通知,业务数据同步。

流量消峰:秒杀抢购场景。

3、异常情况

1)消息堆积

解决方法:临时扩容,加快消费速度。

如果长时间大量消息没处理,丢弃+批量重导(先去mq消费并丢弃,后面再补重要的)。

2)消息已推送,但未到队列,存在消费遗漏

3)消息已过期

解决方法:rabbitmq是可以设置过期时间的,就是TTL,积压一段时间是会被清理掉的。那么丢失了数据后,只能批量重导(流量低峰期,手动去查询丢失的那部分数据,然后将消息重新发送到mq里面,把丢失的数据重新补回来)。

4)服务器异常,消息丢失

4、测试时关注的点

1)验证发送mq的测试数据

2)验证是否触发mq消息成功

3)异常情况测试

①消息队列满,是否存在消息堆积情况。

②某台消息队列服务器宕机情况下,考虑丢失消息的恢复性以及新的消息不会继续发往宕机的服务器。

源自公众号  测试开发交流



留言