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

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值