我有一个通过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>
来自第三方应用程序的外部事件向我的服务器表明它已准备好处理数据,此时我想从我订阅的队列中获取消息并针对第三方应用程序处理它们。
我的handleMessage
方法的工作是将消息排队,直到收到来自第三方应用程序的就绪事件。但是我不想排队太多,它会打败让RabbitMQ在中间的目的。此外,任何可以通过在收到ready事件时显式提取消息而实现的优化都将丢失。
有没有办法表明我想在达到上限后暂停订阅? QueueingConsumer
会在某种程度上与此相关吗?
答案 0 :(得分:2)
SimpleMessageListenerContainer.stop()
之类的声音对您来说已经足够了。
在配置中添加id
属性,并在需要时调用该方法。
此外,您可以再次调用SimpleMessageListenerContainer.start()
。