Как изменить свойства процессора во время выполнения с помощью Camel?

StackOverflow https://stackoverflow.com/questions/1131107

  •  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, чтобы вы могли найти его в одной строке, например, возможно, поиск по идентификатору, если вы указываете идентификатор в маршруте.Или по типам, чтобы вы могли фильтровать и получать только дроссели и т. д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top