我在每台服务器上运行一定数量的侦听器,这些侦听器等于侦听器并发。以下是配置
<rabbit:listener-container
connection-factory="rabbitConnectionFactory" concurrency="${compute.listener.concurrency}"
requeue-rejected="false" prefetch="1">
<rabbit:listener queues="${compute.queue}" ref="computeListener"
method="run" />
</rabbit:listener-container>
在我的作业运行时,是否有任何方法可以在运行时在任何服务器上添加/删除侦听器数量,而无需更改此设置并重新部署应用程序?
可能是某些命令行工具在运行时添加/删除消费者数量?
答案 0 :(得分:0)
您可以手动执行:SimpleMessageListenerContainer.setConcurrentConsumers()/setMaxConcurrentConsumers()
,需要为id
元素指定<rabbit:listener>
。使用它,您可以从应用程序上下文中获取bean,并使用适当的值调用这些方法。
没有任何特定的工具可以在外部进行。
但是你可以这样做,例如使用Spring Integration&#39; <int-stream:stdin-channel-adapter>
。或者写一些@ManagedResource
并使用@@ManagedAttribute
将其公开给JMX,以更改基础SimpleMessageListenerContainer