RabbitMQ进阶, exchange的四种类型

  • 交换器类型

    在介绍这几种类型之前,先给大家说明一下相关的知识点:
    Exchange:交换器。,生产者将消息发送到 Exchange,由交换器将消息路由到一个或者多个队列中。
    在这里插入图片描述
    RoutingKey: 路由键。生产者将消息发给交换器的时候, 一般会指定一个 RoutingKey ,用来指定这个消息的路由规则,而这个 RoutingKey 需要与交换器类型和绑定键 (BindingKey)合使用才能最终生效。在发送消息的时候,其中需要的路由键是 RoutingKey
    Binding: 绑定。RabbitM 中通过绑定将交换器与队列关联起来,在绑定的时候一般会指定一 绑定键 BindingKey ,这样 RabbitMQ 就知 何正确 将消息路由 队列了,如图所示。在使用绑定的时候,其中需要的路由键是 BindingKey
    在这里插入图片描述

    RabbitMQ 常用的交换器类型有 fanout 、 direct、 topic 、 headers 这四种 。 AMQP 协议里还提
    到另外两种类型: System 和自定义,这里不予描述。对于这四种类型下面一一阐述。

fanout:它会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中。

direct:它会把消息路由到那些BindingKey和RoutingKey完全匹配的队列中。

在这里插入图片描述
topic:前面讲到 direct 类型的交换器路由规则是完全匹配 BindingKey 和 RoutingKey ,但是这种严
格的匹配方式在很多情况下不能满足实际业务的需求。topic类型的交换器在匹配规则上进行了扩展,它与 direct类型的交换器相似,也是将消息路由到BindingKey和RoutingKey相匹配的队列中,但这里的匹配规则有些不同。
在这里插入图片描述
headers:headers 类型的交换器不依赖于路由键的匹配规则来路由消息,而是根据发送的消息内容中
的 headers 属性进行匹配。在绑定队列和交换器时制定一组键值对 , 当发送消息到交换器时,
RabbitMQ 会获取到该消息的 headers (也是一个键值对的形式) ,对比其中的键值对是否完全
匹配队列和交换器绑定时指定的键值对,如果完全匹配则消息会路由到该队列,否则不会路由
到该队列 。 headers 类型的交换器性能会很差,而且也不实用,基本上不会看到它的存在。

相关参考:<RabbitMQ实战指南>
源码在此

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: RabbitMQ是一个消息队列中间件,它可以被看作是一个服务节点或者服务实例,通常也可以将其视为一台服务器。\[1\]在生产环境中,由于一些不明原因导致RabbitMQ重启,可能会导致消息投递失败和消息丢失。为了确保消息的可靠投递,可以采用事务机制或者使用发送方确认机制。事务机制可以解决消息发送方和RabbitMQ之间消息确认的问题,只有消息成功被RabbitMQ接收,事务才能提交成功,否则可以进行事务回滚和消息重发。然而,使用事务机制会对RabbitMQ的性能产生一定的影响。另一种方法是使用发送方确认机制,通过该机制可以实现消息的可靠投递,即发送方在消息被RabbitMQ确认接收之后才认为消息已经成功投递。\[2\]\[3\]这样可以在RabbitMQ集群不可用的情况下,对无法投递的消息进行处理和恢复。 #### 引用[.reference_title] - *1* [Rabbitmq进阶](https://blog.csdn.net/weixin_46634416/article/details/124755747)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [RabbitMQ进阶](https://blog.csdn.net/weixin_73198745/article/details/130910185)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [RabbitMQ入门进阶高级详解(内容有点多)](https://blog.csdn.net/sinat_16658263/article/details/124211232)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值