ServiceMix 3.3.1/Camel 2.1/AMQ 5.3 응용 프로그램을 클러스터링하기위한 옵션을 결정하려고합니다. 대량 메시지 처리를 수행하고 있으며 고 가용성 및 수평 확장 성을 위해 클러스터해야합니다. 여기ActiveMQ 클러스터링을 사용하는 Apache Camel
은 기본적으로 내 응용 프로그램이 무엇을 ... HTTP-> QUEUE-> 프로세스 -> 데이터베이스 -> ("부두 : http://0.0.0.0/inbound")에서 TOPIC
.TO ("ActiveMQ를 : inboundQueue"); ("?의 ActiveMQ : inboundQueue maxConcurrentConsumers = 50")로부터
.process (디코드()) .process (변환()) .process (검증()) .process (saveToDatabase()) . to ("activemq : topic : ouboundTopic");
그래서 모든 ServiceMix 및 AcitveMQ 클러스터링 페이지를 읽었지만 여전히 갈 방법이 확실하지 않습니다.
HA 용 마스터/슬레이브 설정을 사용할 수 있다는 것을 알고 있지만 확장성에 도움이되지 않습니다.
브로커 네트워크에 대해 읽었지만 적용 방법을 잘 모릅니다. 예를 들어, 클러스터의 여러 노드에 동일한 Camel 라우트를 배치하면 정확히 상호 작용할 수 있습니까? 한 노드 (NodeA)에서 HTTP 생성자를 가리키면 어떤 메시지가 NodeB로 전송됩니까? 노드 A/B간에 대기열/주제를 공유합니까? 그렇다면 메시지는 어떻게 분할되거나 복제됩니까? 또한, 어떻게 외부 클라이언트가 내 "outboundTopic"을 정확히 구독 할 것인가? (그리고 모든 메시지 등을 얻을 수 있습니까?)
또는 여러 ServiceMix 인스턴스간에 브로커를 공유해야한다고 생각했습니다. 관리 할 큐/토픽 집합이 하나 뿐이므로 더 많은 인스턴스를 추가하여 확장 할 수 있다는 점에서 더 깨끗합니다. 하지만 이제는 단일 브로커의 확장성에 국한되어 있으며 단일 실패 지점으로 돌아 왔습니다 ...
누구나 나를위한 절충점을 명확히 할 수 있다면 ... 고맙겠습니다. .
브루스, 감사합니다. "maxConcurrentConsumers"속성을 사용하여 인바운드 큐에서 소비자를 멀티 스레드했습니다. 이제 다음 단계를 수행하고 여러 컴퓨터에로드를 분산하려고합니다. 그래서 브로커 네트워크에 구성된 동일한 SMX 인스턴스를 여러 개 설치하면 내 필요에 맞게로드가 분산됩니다. 메시지 그룹은 여전히 브로커 네트워크와 스레드 연관 관계를 제공합니까? 또한 포털에서 사용할 수있는 outboundTopic 메시지를 만들어야합니다. 포털은 모든 메시지를 가져 오기 위해 각 브로커에 연결해야합니까? –
메시지 그룹이 중개인 네트워크에서 독점권을 제공 할 것이라고 나는 생각하지 않습니다. 총 주문은 한 번에 하나의 브로커에서만 작동하므로 메시지 그룹이 같은 방식이라고 생각합니다. 모든 메시지가 아웃 바운드 항목으로 전송되는 한 가입이 등록 된 브로커에 관계없이 모든 메시지를 사용해야합니다. 주제이기 때문에 영구 가입을 사용할 수도 있습니다. 인바운드 대기열에서 메시지를 가져 오기 위해 여러 개의 동시 사용자를 사용하기 때문에 영구 가입을 사용하는 단일 고객이 좋은 아이디어라고 확신하지는 않습니다. – bsnyder
@bsnyder - 좋은 요약; ServiceMix의 최신 설명서를 어디에서 얻을 수 있습니까? 웹 사이트의 공식 문서는 구식입니다. – wulfgarpro