·P: 生产者, 也就是要发送消息的程序
·C: 消费者,消息的接收者
·Queue: 消息队列, 图中黄色背景部分. 类似⼀个邮箱, 可以缓存消息; 生产者向其中投递消息, 消费者从其中取出消息.
·特点: 一个生产者P,一个消费者C, 消息只能被消费⼀次. 也称为 点对点(Point-to-Point) 模式.
·适用场景: 消息只能被单个消费者处理
1.Fanout:广播,将消息交给所有绑定到交换机的队列(Publish/Subscribe模式)
2.Direct:定向,把消息交给符合指定routing key的队列(Routing模式)
3.Topic:通配符,把消息交给符合routing pattern(路由模式)的队列(Topics模式)
4.headers类型的交换器不依赖于路由键的匹配规则来路由消息, 而是根据发送的消息内容中的
headers属性进行匹配. headers类型的交换器性能会很差,而且也不实用,基本上不会看到它的存在.
Exchange(交换机)只负责转发消息, 不具备存储消息的能力, 因此如果没有任何队列与Exchange绑
定,或者没有符合路由规则的队列,那么消息就会丢失
RoutingKey: 路由键.生产者将消息发给交换器时, 指定的⼀个字符串, 用来告诉交换机应该如何处理这个消息.
Binding Key:绑定. RabbitMQ中通过Binding(绑定)将交换器与队列关联起来, 在绑定的时候⼀般会指定⼀个Binding Key, 这样RabbitMQ就知道如何正确地将消息路由到队列了.
比如下图: 如果在发送消息时, 设置了RoutingKey 为orange, 消息就会路由到Q1
当消息的 Routing key 与队列绑定的 Bindingkey 相匹配时,消息才会被路由到这个队列.
BindingKey 其实也属于路由键中的⼀种, 官方解释为:the routingkey to use for the binding.
可以翻译为:在绑定的时候使用的路由键. 大多数时候,包括官方文档和 RabbitMQJava API 中都把
BindingKey 和 RoutingKey 看作 RoutingKey , 为了避免混淆,可以这么理解:
1.在使用绑定的时候,需要的路由键是 BindingKey.
2.在发送消息的时候,需要的路由键是 RoutingKey. 后续也可能把两者合称为Routing Key, 大家根据使用场景来区分
·⼀个生产者P, 多个消费者C1, C2, X代表交换机消息复制多份,每个消费者接收相同的消息
·生产者发送⼀条消息,经过交换机转发到多个不同的队列,多个不同的队列就有多个不同的消费者
·适合场景: 消息需要被多个消费者同时接收的场景.如: 实时通知或者广播消息
比如中国气象局发布"天气预报"的消息送⼊交换机, 新浪,百度, 搜狐, 网易等门户网站接⼊消息, 通过队列绑定到该交换机, 自动获取气象局推送的气象数据
本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!
《数据资产管理白皮书》下载地址:https://www.dtstack.com/resources/1073/?src=bbs
《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs
《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs
《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack