在 SimpleMessageListenerContainer 中使用 receiveTimeout 属性

Use of receiveTimeout property in SimpleMessageListenerContainer

我有一个侦听一个队列的侦听器,我想要一个侦听器,以便我的侦听器需要在延迟 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>

侦听器容器配置无法满足您的需求; receiveTimeout 只是容器在查看容器是否已停止之前等待消息的时间。

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

如果您想按计划获取消息而不是事件驱动,使用 RabbitTemplate.receive()(或 receiveAndConvert())可能会更容易。

有一个new plugin for RabbitMQ可能对你有帮助。