2014-09-08 2 views
0

타사 제품의 메시지를 포함 할 수있는 대기열이있는 데이터베이스가 있습니다. 이 메시지를 처리를 위해 내 버스로 가져오고 싶습니다. NServiceBus를 사용하여이 작업을 수행 할 수 있다고 생각하지만 모니터 할 데이터베이스 대기열에 대한 구성이있는 단일 Windows 서비스에서 가져 오는 모든 메시지를 호스트하고 싶습니다.단일 창 서비스의 다중 NServiceBus 호스트

1)) 버스 2 상 오기 메시지 3으로 변환) 각 NServiceBus 주기적 데이터베이스 큐를 폴링하도록 구성 될 버스 메시지

보내기 다음

처리 단계

이다. 메시지가 도착하면 Bus.SendLocal을 수행하여 1 단계를 수행합니다.

NSB 호스트는 메시지 처리기로 프로세스를 수신합니다. 이 메시지 핸들러 내에서 메시지 변환이 발생합니다. 마지막으로 실제 버스 메시지가 전송됩니다. 일반적인 config는 대상 호스트를 처리합니다.

하나의 Windows 서비스 내에 여러 개의 NSB 호스트를 배치 할 수 있는지 여부와 관련하여 문제가 있는지 알고 싶습니다. 모든 호스트가 동일한 구성을 공유해야한다고 생각합니다. (이 제한 사항에 만족합니다.) 맞습니까?

여러 호스트가 'no-no'인 경우 나의 대안은 버스 참조 (싱글 톤)가있는 윈도우 서비스를 갖는 것입니다. TPL 태스크는 데이터베이스 큐를 모니터 한 다음 버스를 사용하여 데이터베이스 메시지를 가져옵니다. 별도의 NServiceBus가 가져온 데이터베이스 메시지를 처리하고 변환을 수행하고 다른 호스트로 전송합니다.

질문의 길이는 죄송합니다.

답변

2

Satellite를 사용하여 이러한 종류의 DB 쿼리를 수행 한 다음 버스로 전달할 수 있어야합니다.

0

"호스트"란 무엇을 의미합니까? 하나의 엔드 포인트로 다양한 메시지 유형을 처리 할 수 ​​있습니까?

단일 호스트에서 원하는만큼 많은 메시지 유형을 처리 할 수 ​​있습니다. 유일한 제약은 동일한 큐를 공유한다는 것입니다. 즉, 모든 메시지 유형에 동일한 우선 순위가 부여됩니다 (이는 매우 특정한 경우에만 문제가됩니다).

+0

안녕하세요, 혼란에 대해 죄송합니다. 호스트는 다음과 같은 기능을 수행합니다. 1) 데이터베이스 대기열 모니터 2) 메시지를 게시 할 버스에 대한 참조 3) 버스로 보내기 전에 메시지 처리를위한 메시지 처리기 클래스를 가질 수있는 기능. 각 스레드는 NServiceBus 호스트의 인스턴스를 포함합니다. – user634266

+0

IHandleMessages를 추가하여 하나의 호스트에 많은 메시지 처리기를 가질 수 있다는 것을 알고 있습니다. 이 질문은 하나의 Windows 프로세스에서 여러 개의 NServiceBus 호스트를 각각 별도의 스레드에 호스팅 할 수 있는지 또는 각 호스트를 각각의 서비스에 포함시킬 수 있습니까? – user634266

+0

나는 왜 당신이 별도의 호스트가 필요 하겠는가에 대해서는 여전히 불명확하다. 난 당신이 단지 데이터베이스를 모니터링하고 버스 (또는 이벤트를 게시) 명령을 보내 여러 개의 배경 스레드를 원하는 것 같아요. –

관련 문제