2011-12-09 4 views
0

간단히하기 위해 배포자의 ControlInputQueue와 StorageQueue를 동일하게 지칭하겠습니다. 필자는 배포자의 클라이언트가 ControlInputQueue에 항목을 쓰는 방법과 작업을 수행 할 수있는 클라이언트를 추적하기 위해 배포자가 항목을 StorageQueue로 이동시키는 방법을 알리는 방법을 이해합니다. 내가 똑같이 취급한다면 설명하기가 더 쉽습니다. 그래서 ...NServiceBus Distributor : 클라이언트를 다시 시작한 후 StorageQueue의 추가 항목을 방지합니다.

NServiceBus 배포자의 동작을 보여주기 위해 개념 증명을 만들었습니다. 예상대로 클라이언트가 시작되면 배포자의 StorageQueue에 항목이 추가됩니다. 메시지가 분배 자에게 (InputQueue를 통해) 들어 오면 분배자는 그것의 StorageQueue에서 항목을 제거하고 표시된 클라이언트에게 메시지를 전달합니다. 클라이언트는 작업을 수행 한 다음 배포자의 StorageQueue에 항목을 다시 추가합니다. 따라서 배포자의 StorageQueue에는 최대 한 개의 항목 (클라이언트 당)이 있습니다.

수동으로 또는 예기치 않게 (서버가 폭발하는 것처럼) 클라이언트를 종료하면 내 문제가 발생합니다. 클라이언트의 항목은 배포자의 StorageQueue에 여전히 존재하므로 배포자가 알고있는 한 클라이언트는 여전히 사용할 수 있습니다. 클라이언트가 다시 시작될 때 StorageQueue에 또 다른 항목을 추가한다는 점을 제외하면 괜찮습니다. 이제는 단일 클라이언트에 대해 StorageQueue에 두 개의 항목이 있습니다.

배포자가 특정 클라이언트에 대해 하나의 StorageQueue 항목 만 갖도록하는 방법이 있습니까?

+0

어떤 버전을 사용하고 있습니까? 나는 분배 자 (Distributor)가 진품이라고 생각하지 않는다. 로드 밸런싱의 라운드 로빈 특성이 고르지 않으면 배포자를 수신 거부하는 것이 효과적 일 때만 문제가 발생할 수 있습니다. –

+1

작업자가 다시 시작할 때 3.0 배포자가 이전 항목을 지 웁니다. –

+0

v2.6을 사용하고 있습니다. Andreas, 듣기 좋습니다. 좋은 사람들이 3.0에 대한 출시 일정을 가지고 있습니까? ;-) –

답변

0

이 질문에 대한 "공식적인"답변을 제공하기 위해 위의 Andreas의 의견에 따르면 NServiceBus v2.6에서는 이러한 중복 항목을 막을 수있는 방법이 없다고합니다. v3.0. 그래서 해결책은 업그레이드하는 것입니다. ;-)

관련 문제