2011-04-26 5 views
1

내가 옳은지 누군가에게 확인해 줄 수 있습니까? "selector"연산은 MessageConsumer 구현 내에서 수행됩니다. (즉, ALL 메시지는 여전히 Message Broker에서 MessageConsumer로 발송 된 다음 해당 메시지에 대해 '선택자'작업이 수행됩니다.) 이 문제는 우리가 관심이없는 (예 : 선택기와 일치하지 않는) 메시지가 많아지면 그 메시지가 결국 프리 페치 또는 캐시 제한으로 인해 MessageConsumer의 내부 대기열을 채울 때 발생합니다. 결과적으로 새로운 메시지, 특히 선택기와 관련된 새로운 메시지를받을 수 없습니다.MessageConsumer의 ActiveMQ 선택기 문제

그래서 MessageBroker 측에서 선택기 작업을 수행하도록 AMQ를 구성 할 수 있습니까? "요격기"를보고 내 자신의 BrokerPlugin을 만들어야합니까? 이 문제를 해결하는 방법에 대한 조언이 있으십니까?

정말 감사드립니다.

감사합니다, Soonthorn의 A.

답변

1

선택기 실제로하지 클라이언트 측에서 브로커에 적용됩니다. 선택기가 희박하고 대상에 많은 트래픽이있는 경우 해당 선택기와 일치하는 메시지에서 브로커가 페이징하지 않았으므로 목적지에서 더 많은 메시지가 소비 될 때까지 일치하는 항목이 표시되지 않습니다.

문제는 브로커의 재생중인 대상 정책에 있습니다. 기본적으로 브로커는 사용 가능한 모든 메모리를 사용하지 않고 전체 성능에 영향을주지 않도록 브라우저에서 200 페이지 만 표시합니다. activemq.xml에서 자신의 DestinationPolicy를 통해이 수를 늘릴 수 있습니다. 설명서 페이지 here을 참조하십시오.