Как изменить свойства процессора во время выполнения с помощью Camel?
-
16-09-2019 - |
Вопрос
у меня есть Верблюд Определение маршрута, написанное на Java DSL, выглядит следующим образом:
from(myEndpoint)
.throttle(200)
.to(myOtherEndpoint);
Это соединяет две мои конечные точки с помощью дросселя, который ограничивает поток сообщений до 200 сообщений в секунду.
Я ищу способ изменить MaximumRequestCount/секунду во время выполнения.Поэтому мне нужно каким-то образом добраться до вызываемого экземпляра Throttler и изменить свойство.
Как я могу получить доступ к дросселю?
Решение
Ок, я сам разобрался...
Вам необходимо определить экземпляр Throttler самостоятельно.
Throttler throttler = new Throttler(null, 200);
Затем вы можете использовать его в своих маршрутах следующим образом, поскольку Throttler реализует интерфейс процессора:
from(myEndpoint)
.process(throttler)
.to(myOtherEndpoint);
В любое время вы можете изменить свойства дросселя.
Другие советы
Да, это аккуратное решение.
В Camel 2.0 теперь вы можете перемещаться по процессорам времени выполнения на маршруте и, таким образом, находить любые дроссели, а затем иметь возможность динамически изменять их.
Но мы также работаем над улучшением JMX в Camel 2.1, чтобы вы могли менять дроссель/замедлитель и тому подобное в JMX.
И, возможно, также улучшить Navigate API, чтобы вы могли найти его в одной строке, например, возможно, поиск по идентификатору, если вы указываете идентификатор в маршруте.Или по типам, чтобы вы могли фильтровать и получать только дроссели и т. д.