1

我在每台服务器上运行了一定数量的侦听器,这等于侦听器并发。下面是配置

<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>

有没有办法在我的作业运行时在运行时添加/删除任何服务器上的侦听器数量,而无需更改此设置并重新部署应用程序?

可能是一些命令行工具在运行时添加/删除消费者数量?

4

1 回答 1

0

您可以手动完成:SimpleMessageListenerContainer.setConcurrentConsumers()/setMaxConcurrentConsumers(),需要id<rabbit:listener>元素指定 。使用它,您可以从应用程序上下文中获取 bean,并使用适当的值调用这些方法。

没有任何特定的工具可以在外部进行。

但是,您可以使用 Spring Integration 的<int-stream:stdin-channel-adapter>. 或者写一些@ManagedResource并用 s 将其暴露给 JMX@@ManagedAttribute以更改底层的这些值SimpleMessageListenerContainer

于 2014-05-29T09:58:11.337 回答