Spring JMS DefaultMessageListenerContainer - 每 1 秒接收 n 条消息

问题描述

我需要每秒从 IBM MQ 接收“n”条消息。示例:我每秒最多需要接收 10 条消息。

我想使用spring的DefaultMessageListnerContainer。

可以通过设置以下配置来实现吗?

<bean id="msgListenerContainer"
        class="org.springframework.jms.listener.DefaultMessageListenerContainer"
        p:connectionFactory-ref="mqConnectionFactory" 
        p:messageListener-ref="myMessageListener"
        p:concurrentConsumers="1" 
        p:maxConcurrentConsumers="10"
        p:receiveTimeout="1000"
        p:maxMessagesPerTask = "10" />

解决方法

如果您想控制消息消耗率,最好使用 JmsTemplate.receiveAndConvert() 而不是消息驱动的架构。

,

Spring DMLC 没有内置节流阀。Apache Camel 是另一种为 JMS -> 节流阀 -> 数据处理而设计的选项