0

我有一个通过 spring-amqp 框架配置的异步消费者:

<listener-container
    connection-factory="connectionFactory"
    message-converter="jsonMessageConverter"
    xmlns="http://www.springframework.org/schema/rabbit">
    <listener ref="requestHandler" method="handleMessage" queue-names="blah" />
</listener-container>

来自 3rd 方应用程序的外部事件向我的服务器表明它已准备好处理数据,此时我想从我订阅的队列中获取消息并针对 3rd 方应用程序处理它们。

我的handleMessage方法的工作是将消息排队,直到收到来自 3rd 方应用程序的就绪事件。但是我不想排队太多,这会破坏将RabbitMQ放在中间的目的。此外,任何可以通过在接收到就绪事件时不显式获取消息来实现的优化都将丢失。

是否有某种方式表明我想在达到上限后暂停订阅?会QueueingConsumer在这里以某种方式相关吗?

4

1 回答 1

2

听起来SimpleMessageListenerContainer.stop()对你来说已经足够了。id向您的配置添加一个属性,并在需要时调用该方法。此外,您可以再次调用SimpleMessageListenerContainer.start()

于 2013-12-10T15:32:44.843 回答