在SimpleMessageListenerContainer中使用receiveTimeout属性

时间:2015-05-29 05:20:31

标签: spring-amqp

我有一个侦听一个队列的侦听器,我想要一个监听器,这样我的监听器需要在延迟1分钟的另一条消息之后消耗一条消息。我已经看到了侦听器容器的receiveTimeout属性,但我无法实现消息消耗的延迟。这是我的听众容器。

<!-- search message listener container -->
    <bean id="listenerContainer"        class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory" />
        <property name="queueNames">
            <array>
                <value>TEST_QUEUE</value>
            </array>
        </property>
        <property name="messageListener" ref="messageListenerAdaptor" />
        <property name="acknowledgeMode" value="AUTO" />
        <property name="concurrentConsumers" value="1" />
        <property name="receiveTimeout" value="60000" />
    </bean>

1 个答案:

答案 0 :(得分:0)

使用侦听器容器配置无法执行您想要的操作; receiveTimeout只是容器在查看容器是否已经停止之前等待消息的时间。

你可以玩一些带有死亡字母和生存时间的中间队列的游戏,但这会很复杂。

如果您希望按计划收到消息而不是事件驱动,那么使用RabbitTemplate.receive()(或receiveAndConvert())可能会更容易。

new plugin for RabbitMQ可能会对您有所帮助。