关于使用 RabbitMQ 的一些基本问题?
Some essential question about using RabbitMQ?
在阅读了关于什么是 Rabbit 及其作用的文档后,我有一些常见问题:
案例是:生产者向一些消费者(订阅者)发送一条消息。
我需要一个简短的解释下面列表的所有要点,使用什么,以及进一步挖掘什么。
- 如何清除队列并停止向消费者发送消息之后
具体 time/date?
- 我可以包含来确认消息用户的数据,例如JSON吗?
- 这些数据存储在哪里?在同一个队列中?
- 如何过滤 已确认消息然后清空队列?
- 如何在特定 time/date 之后清除队列?
- 如果没有一个消费者没有确认消息会发生什么情况,它们会被存储多长时间?
- 消费者是在queue上订阅还是在exchange上也可以订阅?
- 使用一对多模式发送消息,如何设置谁必须
收到消息 first/last 或同时 here described that,但不清楚是在客户端还是服务器端?
- 如果没有消费者,如何重新推送消息到另一个队列并关闭
当前?
- 每个消费者都有自己的个队列?
在此先感谢您对这个问题的任何评论!
如果你能详细说明你的一些问题并包括你的用例是什么,我可以编辑答案。
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 - 同样,这取决于设计和用例。
在阅读了关于什么是 Rabbit 及其作用的文档后,我有一些常见问题:
案例是:生产者向一些消费者(订阅者)发送一条消息。
我需要一个简短的解释下面列表的所有要点,使用什么,以及进一步挖掘什么。
- 如何清除队列并停止向消费者发送消息之后 具体 time/date?
- 我可以包含来确认消息用户的数据,例如JSON吗?
- 这些数据存储在哪里?在同一个队列中?
- 如何过滤 已确认消息然后清空队列?
- 如何在特定 time/date 之后清除队列?
- 如果没有一个消费者没有确认消息会发生什么情况,它们会被存储多长时间?
- 消费者是在queue上订阅还是在exchange上也可以订阅?
- 使用一对多模式发送消息,如何设置谁必须 收到消息 first/last 或同时 here described that,但不清楚是在客户端还是服务器端?
- 如果没有消费者,如何重新推送消息到另一个队列并关闭 当前?
- 每个消费者都有自己的个队列?
在此先感谢您对这个问题的任何评论!
如果你能详细说明你的一些问题并包括你的用例是什么,我可以编辑答案。
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 - 同样,这取决于设计和用例。