문제

나는 특정 시나리오를 염두에두고 ActiveMQ / Camel 멍청이입니다. 먼저 가능한지 궁금합니다. 두 번째로 누군가가 약간의 방향을 제공 할 수 있는지 궁금합니다.

기본적으로 대기열에서 동적 스로틀링을 수행해야합니다. 즉, 설정 능력 런타임에 특정 메시지 그룹이 큐에서 소비됩니다.

예를 들어, 초당 10에 소비 될 메시지 그룹을 추가 할 수 있습니다. 다른 그룹은 초당 1 등으로 소비되어야합니다.

나는 낙타로 경로를 설정하고 메시지 그룹을 큐 등에 그룹화하는 기본 사항을 알고 있지만 문서에서 이것을 파악할 수는 없습니다.

도움이 되었습니까?

해결책

네, 소비자가 차단하기 위해 중개인 측 스로틀 링을 찾고있는 것 같습니다.

ActiveMQ User/Dev Forum에서 요청을 제기 했습니까?

다른 팁

낙타의 기존 만 사용할 수 있습니다 스로틀 그런 다음 다른 스로틀 속도를 구성 해야하는 각 유형의 메시지에 대해 다른 대기열을 사용합니까?

예를 들어

from("activemq:Queue1.Input").
    throttle(20).
    to("activemq:Queue1.Output");  
from("activemq:Queue2.Input").
    throttle(5).
    to("activemq:Queue2.Output");  

Apache Camel Jira에 RFE를 추가하지 않겠습니까?

주어진 메시지 그룹의 속도를 결정하기위한 논리는 무엇입니까?

다른 메시지 그룹이 동일한 스로틀 러 전역에 걸쳐 통과하면 복잡해질 수 있습니다. 어떤 그룹에 속하는 메시지를 결정하기 위해서는 차별자가 필요하며, 따라서 어떤 비율이 스로틀을 통과 해야하는지를 결정합니다.

유스 케이스를 채우고 RFE를 기록하는 데 시간이 걸리면 낙타 커뮤니티가 도움을 줄 수 있다고 확신합니다.

직접 구현하려고 노력할 수 있습니다. 기본적으로 모든 것이 프로세서이므로 ( "ActiveMq : Queue : Foo"). 프로세스 (Myownthrottler) .to ( "Bean : HandleMessage")를 수행 할 수 있습니다.

낙타에서 일부 클래스를 확장 할 수 있습니다 : - DelegateProcessor -DelayProcessorsupport -Throttler


Claus Ibsen Apache Camel Committer

오픈 소스 통합 : http://fusesource.com블로그 : http://davsclaus.blogspot.com/

좋아, 나는 시나리오를 좀 더 자세히 설명하고 내가 말할 수있는 한 메인 차단제를 강조하겠습니다.

2 개의 메시지 그룹이 있습니다 (실제로는 스케일이 훨씬 더 크다), 각각 다른 스로틀 요구 사항을 갖는다. 말한다.

  • 그룹 1 : 유량 = 1; FlowTime = 60 (분당 1)
  • 그룹 2 : 유량 = 1; flowtime = 1 (초당 1)

나는 프로세서를 구현합니다 클로스 헤더 필드를 검사하고이를 지체 입력으로 사용합니다.

그룹 1과 20000의 20000 메시지를 그룹 2에서 추가합니다.

스로틀 러는 소비자 측이기 때문에 그룹 1에 의해 활성화 된 지연기는 입력 버퍼를 빠르게 채워서 속도가 느려집니다. 그 그룹 2 메시지가 갇히게됩니다. 제임스.

JMXGroupID 헤더를 사용하여 메시지를 그룹화하고 여러 소비자를 구현할 수 있지만 수용 요구 사항으로 확장 할 것이라고 생각하지 않습니다. N 여러 떼.

기본적으로 궁금한 점은 소비자 측 스로틀링 또는 다른 솔루션보다는 중개인을 수행 할 수있는 방법이 있는지 또는 소비자가 궁극적으로 차단하지 않고 스로틀을 할 수있는 경우입니다.

내가 명확하게 설명하고 지금까지 제안해 주셔서 감사합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top