首页 > 解决方案 > 关于使用 RabbitMQ 的一些基本问题?

问题描述

在阅读了关于什么是 Rabbit 以及做什么的文档后,我有一些常见问题:

案例是:生产者向一些消费者(订阅者)发送一条消息。

我需要对下面列出的所有要点、使用什么以及进一步挖掘什么做一个简短的解释。

  1. 如何在特定时间/日期后清除队列并停止向消费者发送消息?
  2. 可以在确认消息中包含用户的数据(如 JSON)吗?
  3. 这些数据存储在哪里?在同一个队列中?
  4. 如何过滤确认的消息然后清除队列?
  5. 如何在特定时间/日期后清除队列?
  6. 如果没有一个消费者没有确认消息会发生什么,它们会存储多长时间?
  7. 消费者订阅队列还是也可以订阅交换?
  8. 使用模型一对多发送消息,如何设置谁必须先/最后或同时获取消息,这里描述了,但不清楚是在客户端还是服务器端?
  9. 如果没有消费者,如何将消息重新推送到另一个队列并关闭当前?
  10. 每个消费者都有自己的队列?

提前感谢您对这个问题的任何评论!

标签: rabbitmqrabbitmq-exchange

解决方案


如果您可以详细说明您的一些问题并包括您的用例,我可以编辑答案。

1 - 只要消费者还活着,rabbitmq 就会向消费者发送传入消息。如果您希望消息/队列在一段时间后过期,您可以为消息/队列提供 TTL。 https://www.rabbitmq.com/ttl.html

2 - 你是什么意思?

3 - Rabbitmq 将数据存储在 mnesia 数据库中。 https://www.rabbitmq.com/persistence-conf.html https://www.rabbitmq.com/relocate.html

4 - 你所说的过滤消息和清除队列是什么意思?成功消费的消息立即从队列中删除。

5 - 你可以给 ttl 队列或声明队列为自动删除 https://www.rabbitmq.com/ttl.html https://www.rabbitmq.com/queues.html

6 - 如果消费者不向rabbit发送确认,只要内存变满或rabbit不可用,消息就会保持未确认

7 - 两者。消费者可以创建自己的队列并将其绑定到交换器,也可以从现有队列中消费。这取决于用例。

8 - 如果不知道您所说的one-to-many 的详细信息,很难回答这个问题。直接交换或扇出或其他,有多少队列等。

但是,在 rabbitmq 中,消息默认按发布顺序排序。

根据您共享的链接,rabbitmq 首先将消息发送给优先级较高的消费者,直到消费者预取计数(消费者上的取消确认消息)成为其限制。

9 - 您需要在代码中处理这种情况。或者您可以使用带有 Shovel 插件的管理 ui。

https://www.rabbitmq.com/management.html https://www.rabbitmq.com/shovel.html

10 - 同样,这取决于设计和用例。


推荐阅读