【问题标题】:Set a message limit to the RabbitMQ queue设置 RabbitMQ 队列的消息限制
【发布时间】:2023-07-05 10:20:02
【问题描述】:

我在 RabbitMQ 中同时使用 AMQP 和 MQTT 协议。我将 pica 库用于 AMQP,将 paho 库用于 MQTT。当我用 Pika (x-max-length) 定义尾部时,我可以给出消息限制。但是当我将 paho 用于 MQTT 时,我无法限制消息。如果我在 AMQP 中给队列 50 条消息限制,那么队列中的消息数量永远不会超过 50 条。为什么我不能在 MQTT 上这样做,有没有其他方法可以设置消息限制?

https://www.youtube.com/watch?v=xcpxGJuOyBQ

有一个示例视频。广播者发送消息很快,但是由于接收者很慢,所以在代理中积累了太多消息。我总是想收到最后一条消息。

【问题讨论】:

  • 为什么不添加您尝试过的内容?不知道你的方法就很难调试问题?
  • 因为 MQTT 主题不是队列
  • @RedowanDelowar 我想用它,因为消费者接收消息的速度比发送者慢。
  • @hardillb 不过好像在rabbitmq面板里开了个尾巴。

标签: rabbitmq mqtt iot paho pika


【解决方案1】:

使用rabbitmqctl,您可以使用策略直接设置队列的最大长度,而不是使用客户端库。

例子:

rabbitmqctl set_policy my-pol "^one-meg$" '{"max-length-bytes":1048576}' --apply-to queues

查看官方文档中的Queue Length Limit

【讨论】:

  • 我添加了策略,但它在队列中与 mqtt 无效。
  • @eiscan 您必须更改策略使用的正则表达式,使其与您的队列名称匹配。首先将"^one-meg$" 更改为.,这将匹配所有队列。
最近更新 更多