2011-08-11 3 views
2

우리 시스템에서 실행중인 다른 프로세스에 메시지를 게시하기 위해 NServiceBus를 이미 사용하는 프로세스가 있습니다. 이 프로세스에 다른 프로세스에 메시지를 게시하는 데 필요한 추가 기능을 추가하고 싶지만 새로운 유형의 메시지로 다른 큐에 쓸 수 있어야합니다. 우선 순위가 다른 대기열에서 메시지를 함께 사용하지 않는 것이 좋습니다. 내가 본 모든 것은 NServiceBus가 프로세스 당 하나의 큐만 지원한다는 것을 나타냅니다. 이 올바른지?NServiceBus : 둘 이상의 큐에 게시 할 프로세스에 대한 요구 사항

그렇다면 누구나 좋은 해결책을 제안 할 수 있습니까? 내가 생각할 수있는 유일한 방법은 별도의 "NServiceBus Hub"프로세스에 새 큐를 저장 한 다음 WCF 통합 기능을 사용하여 새 프로세스 프로세스 간을 새 프로세스 큐에서 허브로 삽입하여 새 큐에 삽입하는 것입니다.

감사합니다.

답변

1

높은 우선 순위 메시지와 낮은 우선 순위 메시지를 단일 대기열에 혼합하는 것에 대한 우려는 유효합니다.

송신자와 수신자 모두에서이 문제를 해결해야합니다.

발신자가 자신의 단일 대기열에 로컬로 쓰지 않습니다. 오히려 메시지를받는 사람에게 보낼 때 보낸 사람은 해당받는 사람에게 특정한 임시 로컬 큐에 씁니다. 같은 큐에서

  1. 수신기 처리 높고 낮은 우선 순위의 메시지 :

    그래서 당신은 두 가지 잠재적 인 문제가있다.
  2. 보낸 사람이 높은 우선 순위 메시지와 낮은 우선 순위 메시지를 보냈습니다.

이 하나 또는 둘 다 할 수있는 경우라면 두 서비스, 높은 우선 순위 처리에 하나, 낮은 우선 순위에 하나에 별도의

  1. 수신기 서비스.
  2. 높은 우선 순위 처리를 자체 NServiceBus 게시자 서비스로 분리 할 수도 있습니다.

이렇게하면 여러 끝점간에 우선 순위를 명확하게 지정할 수 있습니다.

+0

휴, 응답 해 주셔서 감사합니다. 네가 제안하는 것을 이해하려고 노력하고있어. 어쨌든 이들은 분리 된 서비스이기 때문에 저를위한 문제점은 수신기 (구내 구독자)가 아니다. 문제는 보낸 사람 (게시자) 응용 프로그램이며 높은 우선 순위 메시지와 낮은 우선 순위 메시지를 모두 생성합니다 (구분할 수 없음). 게시자 대기열을 별도의 서비스에 넣을 수는 있지만 응용 프로그램과 게시자 서비스간에 어떻게 통신합니까? WCF? – jacko

+0

그래서 문제는 대기열에 머물러 있지 않으므로 우선 순위가 높은 메시지와 낮은 우선 순위의 메시지를 동일한 서비스에 연결한다는 것입니다. 게시자가 우선 순위가 낮은 항목을 게시하는 CPU주기를 모두 사용한다는 점만 제외하고 구독자가 두 가지 메시지 유형을 모두 구독하지 않는다면 문제가 발생합니다. 게시는 구독을 평가하고 MSMQ를 통해 전송하는 것입니다. MSMQ는 각 구독자마다 메시지를 전송할 별도의 로컬 큐가 만들어 지도록 보장합니다. 따라서 메시지의 우선 순위를 지정하려면 게시자를 여러 서비스로 분리해야합니다. –