【问题标题】:Java MQ consumer - How to control message consumuption rateJava MQ 消费者 - 如何控制消息消费率
【发布时间】:2022-01-31 19:26:29
【问题描述】:

我正在使用 Spring JMS (DefaultMessageListenerContainer) 从 IBM MQ 读取消息,调用端点,并在成功时确认消息 (Client Ack)。我需要控制微服务调用端点的速率。

有没有办法控制消费者消费消息的速率?假设微服务每秒消耗 1 条消息(最大值)。

我尝试将并发配置为 1 和轮询间隔(1000 毫秒),但这并不能控制消息消耗的速率。也就是说,如果整个过程在 500 毫秒内完成,那么服务会立即接收另一条消息,而无需等待。

【问题讨论】:

  • 你试过this吗?
  • @DanielSteinmann 我看过它,但仅限于一个并发。有没有办法实现多个并发并控制每个消费者接收消息的速率?我想知道这是由 JMSTemplate (DefaultMessageListener) 还是由 IBM MQ 库提供的开箱即用的

标签: java microservices ibm-mq spring-jms


【解决方案1】:

对于这种情况,您可以尝试使用 JmsTemplate 提供的接收方法。

i.e. jmsTemplate.receive(destination);

这让您可以按需使用消息。 您可以将此逻辑包装在每 1 秒运行一次的调度程序中

【讨论】:

  • 谢谢@dhanraj。我试过这个并且它有效。我想知道这是否由 DefaultMessageListenerContainer 提供,或者是否有可以覆盖它的方法。我想使用 MQ 的原因之一是控制向旧系统发送消息的速率。
猜你喜欢
  • 2020-06-25
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 2013-08-25
  • 2017-09-23
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
相关资源
最近更新 更多