낙타를 사용하여 런타임 동안 프로세서 속성을 변경하는 방법은 무엇입니까?
-
16-09-2019 - |
문제
나는있다 낙타 다음과 같은 Java DSL로 작성된 경로 정의 :
from(myEndpoint)
.throttle(200)
.to(myOtherEndpoint);
이것은 메시지 흐름을 초당 200 개의 메시지로 제한하는 스로틀 러를 사용하여 두 개의 엔드 포인트를 연결합니다.
런타임 동안 MaximumRequestCount / Second를 변경하는 방법을 찾고 있습니다. 그래서 나는 어떻게 든 호텔을 호출하고 속성을 변경하는 스로틀 러 인스턴스에 도달해야합니다.
Throttler에 어떻게 액세스 할 수 있습니까?
해결책
좋아, 혼자서 알아 냈어 ...
스로틀 인스턴스를 직접 정의해야합니다.
Throttler throttler = new Throttler(null, 200);
그런 다음 Throttler가 프로세서 인터페이스를 구현하기 때문에 이와 같은 경로에서 사용할 수 있습니다.
from(myEndpoint)
.process(throttler)
.to(myOtherEndpoint);
당신이 좋아할 때마다 당신은 스로틀 러의 속성을 변경할 수 있습니다.
다른 팁
네, 깔끔한 해결책입니다.
Camel 2.0에서는 이제 경로에서 런타임 프로세서를 탐색하여 스로틀 러를 찾은 다음 동적으로 변경할 수 있습니다.
그러나 우리는 또한 Camel 2.1에서 JMX를 개선하기 위해 노력하고 있으므로 Throttler/Delayer 및 JMX에서 좋아하는 것을 변경할 수 있습니다.
또한 Navigate API를 개선하여 한 라이너에서 찾을 수 있습니다. 예를 들어 경로에서 ID를 제공하는 경우 ID로 조회 할 수 있습니다. 또는 유형별로 필터링하고 스로틀 러 등만 얻을 수 있습니다.
제휴하지 않습니다 StackOverflow