Rabbitmq 如何限制spring amqp ascyn消费者的消息订阅?
我通过spring amqp框架配置了一个异步消费者:Rabbitmq 如何限制spring amqp ascyn消费者的消息订阅?,rabbitmq,spring-amqp,Rabbitmq,Spring Amqp,我通过spring amqp框架配置了一个异步消费者: <listener-container connection-factory="connectionFactory" message-converter="jsonMessageConverter" xmlns="http://www.springframework.org/schema/rabbit"> <listener ref="requestHandler" method="hand
<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>
来自第三方应用程序的外部事件向我的服务器表明它已准备好处理数据,此时我希望从我订阅的队列中获取消息,并针对第三方应用程序处理它们
myhandleMessage
方法的任务是将消息排队,直到收到来自第三方应用程序的就绪事件。但我不想排队太多,这将击败在中间有RabBMQ的目的。此外,通过在接收到就绪事件时不显式获取消息而实现的任何优化都将丢失
是否有某种方式表明我希望在达到上限后暂停订阅?
QueueingConsumer
是否与此相关?听起来像是SimpleMessageListenerContainer.stop()
就足够了。
在配置中添加id
属性,并在需要时调用该方法。
此外,您还可以再次调用
SimpleMessageListenerContainer.start()
。或者您可以在requestHandler
中阻止消费者线程,等待下游服务可用。使用默认预回迁计数(1)时,当前消息将被延迟,代理将不再传递任何消息。您可以增加预回迁以获得更好的性能,但是阻塞线程只意味着其他预回迁消息在容器中排队(它们将在管理控制台上显示为等待确认)。