当前位置:   article > 正文

AMQP消息队列的测试方法

消息队列测试方法

作者简介

羊老师,目前就职于饿了么物流研发部,运单与服务业务线的测试负责人,同时也负责测试基础设施的开发与维护,致力于自动化测试及工程效率的提升工作

前言

在大型互联网架构中经常会用到消息队列(Message Queue)这种中间件,在服务端测试时,许多测试同学通过工具对API和数据库都能熟练地进行测试,一说到消息队列的测试就有点不知道怎么入手了。那么对于看不见摸不着的消息队列,如何进行有效的测试呢?在介绍测试方法之前,我们先来了解一下消息队列的原理与机制,这里以常见的AMQP协议的消息队列为例。

1. AMQP消息队列简介

1.1 什么是消息队列

消息队列,简单来说,就是我们通过网络向对方发送了一封短消息,短消息通过运营商网络发送到接收者,被对方读取。消息队列则是由生产者(消息的发送者)通过消息队列服务器向消费者发送一个消息,消息体可以为字符串或者更多的数据结构,由消费者在消费端读取消息。

1.2 什么是AMQP

当前各种应用大量使用异步消息模型,并随之产生众多消息中间件产品及协议,标准的不一致使应用与中间件之间的耦合限制产品的选择,并增加维护成本。AMQP(Advanced Message Queuing Protocol)是一个提供统一消息服务的应用层标准协议,基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。

RabbitMQ是比较常见的一种基于AMQP的消息服务端。

1.3 AMQP 0.9.1 工作模型

工作过程
  1. Publisher将message发布到exchange(exchange可以看作是一个邮局或者邮件系统,也就是Broker)
  2. 将queue注册到exchange上监听某种类型的消息,这个过程称之为bingding(绑定)
  3. exchange将message投递到queue,这个过程称之为routing(路由)。
  4. AMQP Broker将message发送给订阅(subscribed)message的consumer,或者consumer按需将message从对应的queue中取出来。
名词解释
  • Broker: 接收和分发消息的应用,其实就是AMQP服务器端
  • Exchange: message到达broker的第一站,相当于一个路由器,匹配查询表中的routing key,分发消息到queue中去。exchange主要有四种类型:direct (点对点)、 topic (主题订阅) 、 fanout (广播)和 headers(头信息匹配)。
  • Queue: 是一个消息的载体,消息最终被送到这里等待consumer取走。
  • Binding: exchange和queue之间的虚拟连接,binding中可以包含routing key。Binding信息被保存到exchange中的查询表中,用于message的分发依据。
  • Virtual host: 当多个不同的用户使用同一个AMQP服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue等。
  • Connection: publisher/consumer和broker之间的TCP连接。断开连接的操作只会在client端进行,Broker不会断开连接,除非出现网络故障或broker服务出现问题。
  • Channel: Channel是在connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的channel进行通讯,AMQP method包含了channel id帮助客户端和message broker识别channel,所以channel之间是完全隔离的。

校稿人注

关于channel和多线程

如今很少会有单进程单线程的应用,大多数情况下生产者、消费者都是多进程多线程的,当然每个线程都可以创建一个connection,同样可以满足链接broker

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/640281
推荐阅读
相关标签
  

闽ICP备14008679号