2011-08-12 4 views
2

MSMQ를 응용 프로그램의 메시지 처리 서비스로 사용할 것을 고려하고 있습니다. 우리가 원하는 것은 - 노드간에로드를 분산시키는 NLB (Network Load Balancer) 뒤에있는 서버 팜의 MSMQ입니다. 나는 온라인에서 어떤 조언도 찾을 수없는 다음과 같은 질문을 가지고있다.서버 팜의 MSMQ

1) 모든 노드에 MSMQ가 설치되어 있어야합니까?
2) 그렇다면 보낸 사람 응용 프로그램이 MSMQ로 메시지를 보낼 때 모든 노드로 보내야합니까?
3) 두 번째 질문에 대한 대답이 "예"이면 클라이언트 응용 프로그램에서 메시지를받을 때 클라이언트가받은 메시지에 대해 다른 노드에 통보하고 이후에 제거해야합니까?

도움/의견을 보내 주시면 감사하겠습니다.

답변

4

여기에 도움이 될 몇 가지 블로그 게시물은 다음과 같습니다

Q1) 내가 MSMQ 모든 노드에 설치해야합니까?
A1) 메시지가 배달 될 모든 서버에도 MSMQ가 설치되어 있어야합니다.

질문 2 그렇다면 보낸 사람 응용 프로그램이 모든 노드에 보낼 메시지를 MSMQ로 보낼 때?
A2) 이는 X 메시지를 X 노드로 보내고 하나의 노드에서만 읽을 수 있도록로드 균형을 조정하는 방법 중 하나입니다.
또 다른 방법은 하나의 메시지를 임의로 선택된 노드로 보내는 네트워크 부하 분산 장치로 보내는 것입니다. MSMQ는 매우 끈적하기 때문에 대량의 부하를로드하는 것이 매우 어렵거나 불가능합니다.

Q3) 내 두 번째 질문에 대한 대답이 '예'인 경우 클라이언트 응용 프로그램에서 메시지를 받으면 클라이언트가 수신중인 메시지에 대해 다른 노드에 통보하고 이후에 메시지에서 제거해야합니까?
A3) 이것이로드 균형 조정 유형의 단점입니다. MSMQ는 응용 프로그램이 메시지를 제거하거나 TimeToBeReceived 타이머가 만료되지 않는 한 메시지를 제거하지 않습니다. 기본적으로 메시지 처리가 중복되지 않도록하려면 클라이언트 응용 프로그램을 조정해야합니다.

건배
존 Breakwell

+0

감사합니다 존, 응답 및 포인터합니다. – muruge

+1

A2에 대해서는 "MSMQ가 매우 끈적 끈적합니다"라고 좋은 토론이 있습니다 : http://blogs.msdn.com/b/johnbreakwell/archive/2009/03/19/load-balancing-msmq-a-brief-discussion. aspx "기본적으로 ... 2 ~ 5 분 동안 기다려야 네트워크 연결이 끊어지기 전에 작동하지 않을 수 있습니다 .... MSMQ가 연결을 거의 즉시 중단하도록 할 수 있습니다. 그러나 다음 메시지는 새로운 네트워크 연결이 생성 될 때까지 기다려야하므로 " –

+0

고마워, Nelson :-) –