如何限制消息传递给消费者?

时间:2018-01-12 10:22:55

标签: rabbitmq apache-kafka message-queue throttling iron.io

我正在寻找具有内置限制功能的消息队列。用例是收件人工作池可能接受大量消息,但工作者依赖的服务可能无法处理负载。由于工作者实例处理不同类型的消息,因此无法减少工作池。

所以我正在寻找的功能是根据主题进行限制。说一个主题T,我希望队列接受来自生产者的尽可能多的消息,但是限制消费者对主题T的需求,说每分钟只发送5封邮件。

2 个答案:

答案 0 :(得分:0)

对于Java,以下解决方案可能有效,它们也应该可用于节点

  • 您可以通过控制消费者poll()来限制消息 调用。
  • 尝试在致电poll()

  • 之间休眠
  • 尝试在poll()中使用更多超时,并使用以下属性
    MAX_POLL_RECORDS_CONFIG控制您将收到多少邮件 收到一次民意调查。

答案 1 :(得分:0)

如果使用IronMQ,则在使用“拉”队列时可以限制消息。此功能需要通过用户代码手动完成。如果要使用“推送”队列,则将无法限制消息。但是,您的消费者将以最高的速率接收消息。这是描述推入和拉入队列的链接:https://dev.iron.io/mq/3/reference/push_queues/index.html

如果您还有其他疑问,请通过chat,电子邮件或电话与Iron.io支持联系。