Как добавить / удалить потребителей во время выполнения весной amqp?

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>

Есть ли способ добавить/удалить количество слушателей на любом сервере во время выполнения, когда моя работа выполняется без внесения изменений в этот параметр и повторного развертывания приложения?

Может быть, какой-то инструмент командной строки для добавления/удаления числа пользователей во время выполнения?

Теги:
spring
spring-amqp
rabbitmq

1 ответ

0
Лучший ответ

Вы можете сделать это вручную: SimpleMessageListenerContainer.setConcurrentConsumers()/setMaxConcurrentConsumers(), необходимо указать id для элемента <rabbit:listener>. И используя его, вы можете получить компонент из контекста приложения и вызвать эти методы с соответствующими значениями.

Нет никакого специального средства, чтобы сделать это извне.

Однако вы можете это сделать, например, с помощью Spring Integration <int-stream:stdin-channel-adapter>. Или напишите некоторый @ManagedResource и @ManagedResource его в JMX с @@ManagedAttribute чтобы изменить эти значения для базового SimpleMessageListenerContainer

Ещё вопросы

Сообщество Overcoder
Наверх
Меню