RabbitMQ是怎么做消息分发的?

本文详细介绍了RabbitMQ的六种工作模式,包括简单模式、工作队列模式、发布订阅模式、路由模式、主题模式以及RPC模式,阐述了它们在不同场景下的应用和实现原理。
摘要由CSDN通过智能技术生成

rabbitMQ一个有6种工作模式(消息分发方式)分别是简单模式,工作队列模式,发布订阅模式,路由模式,主题模式以及RPC模式。

1.简单模式是最基本的工作模式,也是最简单的消息传递模式。在简单模式中,一个生产者将消息发送到一个队列中,一个消费者从队列中获取并处理消息。这种模式适用于单个生产者和单个消费者的简单场景,消息的处理是同步的。

2.工作队列模式用于实现一个任务在多个消费者之间的并发处理。在工作队列模式中,一个生产者将消息发送到一个队列中,多个消费者从队列中获取并处理消息。每个消息只能被一个消费者处理。这种模式使用于多个消费者并发处理消息的情况,提供了系统的处理能力和吞吐量

3.发布订阅模式用于实现一条消息被多个消费者同时接收和处理。在发布/订阅模式中,一个生产者将消息发送到交换器中,交换器将消息广播到所有绑定的队列,每个队列对应一个消费者。这种模式适用于消息需要被多个消费者同时接收和处理的广播场景,如日志订阅和事件通知等。

4.路由模式用于实现根据消息的路由键(Routing key)将消息路由到不同的队列中。在路由模式中,一个生产者将消息发送到交换器中,并指定消息的路由键,交换机根据路由键将消息路由到于之匹配的队列中。这种模式使用于根据不同的条件将消息发送到不同的队列中,以实现消息的筛选和分发。

5.主题模式是一种更灵活的消息路由模式,它使用通配符匹配路由键,将消息路由到多个队列中。在主题模式中,一个生产者将消息发送到交换器中,并指定主题 作为路由键,交换器根据通配符匹配将消息路由到匹配的队列中。这种模式适用于消息的复制路由需求,可以实现高度灵活的消息筛选和分发。

6.        RPC模式是一种用于实现分布式系统中远程调用的工作模式。指的是通过RabbitMQ来实现一种RPC的能力

这几种模式,根据不同的场景可以用不同的模式,每种模式的发送方及接收方的代码都不太一样,有的简单,有的复杂,具体实现可以参考:

https://www.rabbitmq.com/getstarted.html

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
RabbitMQ可以采取一些措施来防止消息堆积。首先,我们可以考虑设置合适的队列容量上限,以确保队列不会无限制地增长。这可以通过在创建队列时设置最大长度或者通过设置队列的最大消息数量来实现。此外,我们还可以设置消息的过期时间,以便在一定时间后自动删除过期的消息,避免消息长时间滞留在队列中。 另外,可以使用消费者限流来控制消息的消费速率。通过设置每个消费者处理消息的数量或者设置每个消费者的预取值(prefetch count),可以限制消费者从队列中获取消息的数量。这样可以有效地控制消息的处理速度,避免由于消费速度跟不上生产速度而导致的消息堆积问题。 此外,还可以使用死信队列(Dead Letter Exchange)来处理无法被消费的消息。当消息无法被正常消费时,可以将其发送到死信队列,然后再对死信队列中的消息进行处理。这样可以确保消息不会丢失,并且可以随时检查和处理无法被消费的消息。 总之,通过设置队列容量上限,设置消息的过期时间,使用消费者限流和死信队列等方法,可以有效地防止RabbitMQ消息堆积问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [在我们的RabbitMQ如何避免消息堆积的问题?](https://blog.csdn.net/weixin_59297657/article/details/130147562)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【物联网平台Rabbitmq实际应用】rabbitMQ的使用场景?消息队列产生严重消息堆积怎么处理?](https://blog.csdn.net/weixin_44106334/article/details/119530308)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z.jiaminf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值