RabbitMQ
实现了AMQP协议(高级消息队列协议),遵循Mozilla Public License开源协议。
使用场景:数据投递、非阻塞操作、推送通知、发布/订阅模式、异步处理、工作队列
实现系统自动化、可访问性和伸缩性
开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,或者简单地将作业排队以便让分布式服务器进行处理。
a)整体架构模型
b)队列(Queue)
RbMQ的消息只能存在队列中。生产者生产消息最终投递到队列中,消费者从队列中获取消息并消费。
c)交换器(Exchange)
生产者将消息发送到Exchange,由交换器将消息路由到一个或者多个队列中。路由不到,则丢弃。
d) 路由键(Routing Key)
生产者将消息发给交换器的时候,会指定路由键,用来指定这个消息的 路由规则,路由键需要与交换器类型和绑定键联合使用才能最终生效。
在交换器类型和绑定键固定的情况下,生产者在发送消息给交换器时,通过路由键来决定消息流向哪里。
e) 绑定(Binding)
通过绑定 把交换器和队列关联起来,在绑定的时候通常会绑定一个绑定键,这样RbMQ就知道如何正确地将消息路由到队列了。