Как я могу отправить уведомление конечной точке, когда Throttler запускает / останавливает регулирование? - PullRequest
0 голосов
/ 15 февраля 2019

Как гласит заголовок, я хотел бы отправить уведомление конечной точке, если сообщения на нее начинают регулироваться, и другое сообщение, когда регулирование прекращается.

В настоящее время у меня есть следующий (очень простой) маршрутконфигурация:

from("test-jms:queue:test.queue")
.throttle(2)
.to("file://test");

Эта конфигурация прекрасно регулирует сообщения, но мне нужен способ сообщить потребителю, что сообщения регулируются.

Когда регулятор начинает регулировать, я бы хотелотправить уведомление конечной точке «to», чтобы те, кто читает сообщения, знали, что их регулируют.Я также хотел бы иметь возможность отправлять другое сообщение, когда Throttler больше не регулируется, поэтому потребитель знает, что сообщения актуальны.

Похоже, что Throttler не делает этого.Единственный способ получить уведомление о начале регулирования - установить для rejectExecution значение true, после чего произойдет исключение.Проблема в том, что в этот момент выполнение останавливается, и сообщения больше не передаются (поскольку было сгенерировано исключение).

В настоящее время я думаю, что мне нужно будет создать пользовательский компонент / процессор / что-то, что выполняетпо сути, та же функция, что и для регулятора, но также вводит сообщение, когда регулирование начинается или прекращается.Я не хочу этого делать, если мне действительно не нужно.Любая помощь приветствуется.Спасибо!

1 Ответ

0 голосов
/ 16 февраля 2019

Нет, ero throttler не поддерживает такую ​​информацию (однако вы можете получить некоторую статистику через JMX).Другая мысль состояла бы в том, чтобы поменять направление, чтобы потребители сигнализировали в восходящем направлении, когда им нужны новые сообщения (это то, что делают реагирующие системы).

Я предполагаю, что вышесказанное для записи в файл является лишь некоторым примером того, что потребителиВы используете в реальной жизни, и им действительно нужно знать, что резервное копирование некоторых сообщений происходит в течение короткого периода времени в 1 секунду, потому что они ограничены?Кроме того, поскольку вашим источником является JMS, вы также можете взглянуть на политику регулирования маршрута, в которой вы можете приостанавливать / возобновлять работу потребителя JMS вместо использования EIP-регулятора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...