rabbitmq - 关于使用 RabbitMQ 的一些基本问题?
问题描述
在阅读了关于什么是 Rabbit 以及做什么的文档后,我有一些常见问题:
案例是:生产者向一些消费者(订阅者)发送一条消息。
我需要对下面列出的所有要点、使用什么以及进一步挖掘什么做一个简短的解释。
- 如何在特定时间/日期后清除队列并停止向消费者发送消息?
- 我可以在确认消息中包含用户的数据(如 JSON)吗?
- 这些数据存储在哪里?在同一个队列中?
- 如何过滤确认的消息然后清除队列?
- 如何在特定时间/日期后清除队列?
- 如果没有一个消费者没有确认消息会发生什么,它们会存储多长时间?
- 消费者订阅队列还是也可以订阅交换?
- 使用模型一对多发送消息,如何设置谁必须先/最后或同时获取消息,这里描述了,但不清楚是在客户端还是服务器端?
- 如果没有消费者,如何将消息重新推送到另一个队列并关闭当前?
- 每个消费者都有自己的队列?
提前感谢您对这个问题的任何评论!
解决方案
如果您可以详细说明您的一些问题并包括您的用例,我可以编辑答案。
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 - 同样,这取决于设计和用例。
推荐阅读
- python-3.x - 如何正确接收 Pubsub JSON 数据?
- arrays - 如何计算对 (a[i], a[j]), i < j 和 a[i] + a[j] 可以被 k 除以没有余数
- reactjs - 如何限制对我的反应构建静态文件的访问?
- jenkins - 如何使用可选参数执行 groovy 共享库
- python - 无法访问迭代器中的批处理项目 - Torchtext 属性错误:“字段”对象没有属性“词汇”
- css - 简单的网络服务器无法重新获取网页。页面包含 html 和大型 css 文件,例如 stat.st_size=22926
- firebase - 尝试在真实设备中运行颤振应用程序时出错
- azure-ad-b2c - Azure B2C 用户流不显示任何应用程序
- c# - 嵌套线程中断计时器
- azure - Terraform - 从本地状态文件中删除资源