zzzhc's Blog

stay curious

AMQP

AMQP(Advanced Message Queuing Protocol) 是一个为消息驱动中间件提供的应用层协议,binary protocol. 协议规范有多个版本,0-8版本是支持得最多的。

AMQP的原始用途只是为金融界提供一个可以彼此协作的消息协议,而现在的目标则是为通用消息队列架构提供通用基础架构。因此,面向消息的中间件 (MOM)系统,例如发布/订阅队列,没有作为基本元素实现,而是通过发送简化的AMQ实体来完成。这些实体也是规范的一 部分,形成了在线路层协议顶端的一个层级:AMQP模型。这个模型统一了消息模式,包括发布/订阅,队列,事务以及流数据,路由等。

几个主要概念:

  • broker,即AMQP server
  • message, 内容不可变,没有长度限制
  • queue, message最终总会进入一个queue
  • exchange, 为message提供分发服务,按binding规则将message分发到一个或多个queue, 有多种类型,如direct, fanout, topic
  • binding, 消息路由规则

exchange的类型说明:

 

brokers

Qpid c++ broker性能测试结果

qpid-perftest —worker-threads 16 —default-queue-limit 1024000 —queue-purge-interval 30 —tcp-nodelay —mgmt-enable no

Message size (bytes) Total transfers/sec Total Mbytes/sec
32 708,159 21.6113
64 627,766 38.3158
128 537,001 65.5519
256 487,070 118.914
512 278,192 135.445
1024 176,901 172.755

ruby client

Comments