AMQP高级消息队列协议
目的:
amqp出现之前,有很多的消息中间件,各个消息中间件的接口协议不一样,客户端需要根据不同的消息中间件接口,编写不同的逻辑,这就造成了应用与中间件的耦合,限制产品的选择。为了统一消息中间件的接口,就出现了amqp。
amqp架构主要概念:
message:由header和body组成,body存放的是二进制的消息。header主要存放的是routing key,告诉broker把消息发到哪个queue。
exchange:接收消息生产者(Message Producer)发送的消息根据不同的路由算法将消息发送往Message queue。exchange里有一张路由表,这张表里记录着每个queue接受哪种消息。根据routing key和Bingdingkey之间的关系,发送到某个queue。常用的类型有:direct (点对点), topic (发布-订阅) 、fanout (广播)。
例如topic
routing keyBingdingkey queue
topic1 topic1--queue1 queue1
topic2 topic2--queue2 queue2
topic3 topic3--queue3 queue3
queue:将消息转发到consumer。
Binding:建立exchange和queue的关联。将queue接受哪种消息的条件绑定到Exchange,这个条件叫做bingding key.
消息发送和接收过程
生产者将消息发送到broker,exchange根据消息头中的路由key(routing key)到路由表里查询对应的binding,然后把消息发送到对应的message queue,消费者从queue中读取消息。
网友评论