关于使用 RabbitMQ 的一些基本问题?

Some essential question about using RabbitMQ?

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

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

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

  1. 如何清除队列并停止向消费者发送消息之后 具体 time/date?
  2. 我可以包含来确认消息用户的数据,例如JSON吗?
  3. 这些数据存储在哪里?在同一个队列中?
  4. 如何过滤 已确认消息然后清空队列?
  5. 如何在特定 time/date 之后清除队列
  6. 如果没有一个消费者没有确认消息会发生什么情况,它们会被存储多长时间?
  7. 消费者是在queue上订阅还是在exchange上也可以订阅?
  8. 使用一对多模式发送消息,如何设置谁必须 收到消息 first/last 或同时 here described that,但不清楚是在客户端还是服务器端?
  9. 如果没有消费者,如何重新推送消息到另一个队列并关闭 当前?
  10. 每个消费者都有自己的个队列?

在此先感谢您对这个问题的任何评论!

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

1 - 只要消费者还活着,rabbitmq 就会将传入的消息发送给消费者。如果你想让它们在一段时间后过期,你可以给 messages/queues 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 发送 ack,只要内存已满或 rabbit 不可用,消息就会保持未确认状态

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

8 - 如果不了解一对多的详细含义,很难回答这个问题。直接交换或扇出或其他什么,有多少队列等

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

根据您分享的 link,rabbitmq 首先将消息发送给更高优先级的消费者,直到消费者预取计数(对消费者的未确认消息)达到其限制。

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

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

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