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
- qpid ruby client
- ruby-amqp 只支持AMQP 0-8