2017-03-06 10 views
0

저는 다양한 클라이언트가 하루 중 짧은 시간 동안 연결하는 메시지 브로커를 보유하고 있습니다.ActiveMQ - 관심있는 가입자 만있는 데이터를 게시하기위한 전략?

브로커는 수천 가지의 가격을 게시 할 수있는 주제를 유지하지만 현재 연결되어있는 클라이언트 세트는 항상 이러한 항목의 작은 하위 집합에만 관심이 있습니다.

밀접하게 결합 된 시스템에서 클라이언트는 명시 적으로 특정 항목을 구독하고 서버는 클라이언트 연결/연결 끊기 이벤트 (연결이 끊어진 클라이언트 자동 수신 거부)를 추적하고 클라이언트가 가입 한 항목의 가격 만 게시합니다.

ActiveMQ와 같은 메시징 시스템의 느슨하게 결합 된 세계에서 이러한 종류의 문제를 처리하는 가장 좋은 방법은 무엇입니까?

제 경우 브로커는 제 3 자 시스템으로부터 가격을 얻으면서 가격을 게시하는 대상의 수를 최소화해야합니다. 제 3 자 시스템은 가격이 주어진 시점에서 스트리밍 될 수있는 시각.

첫 번째 경향은 저레벨 이벤트를 추적하고 현재 연결되어있는 브로커에게 알려주고 고객이 더 이상 특정 항목의 가격에 관심이 없다는 것을 명시 적으로 신호하도록 요구하지 않는 것입니다.

대신 클라이언트는 주어진 항목 세트에 대해 가격에 대한 관심을 정기적으로 발표합니다. 중개인은 적극적인 관심이있는 모든 것에 대한 가격을 발표 할 것이고, 결국 고객이 최근 관심을 표명하지 않은 것에 대한 가격을 공개하지 않을 것입니다.

더 단단히 결합 된 시스템과 달리 클라이언트는 가격을 원하는 특정 세트에 대한 관심을 다시 발표해야하지만 적극적으로 관심 종결을 발표해서는 안됩니다.

이런 종류의 문제에 대한 더 나은 표준 접근 방식이 있습니까?

답변

1

당신의 프로듀서가 연결되어 소비자와 자신의 선택기 (있는 경우)을 알고 있어야합니다, 그래서 내가 생각하는 그는 게시 알고 선택기의 목록을 유지할 필요가

1 이러한 이유로 당신은 유지할 필요가 시작시 자문 메시지를 http://activemq.apache.org/advisory-message.html

AdvisorySupport.getConsumerAdvisoryTopic() 

2 소비자를 사용하여이 목록은 서로 다른 목적지를 원하는 경우 사용하고, 구독 취소 통지 할 대상 어쩌면 관심이 그 어떤 정보에 통보하고 생산자에게 메시지를 보내거나 관심을 중지.

3- 화재 및 잊어 버린 EIP 패턴을 유지하십시오.