2013-06-27 2 views
2

NServiceBus 2.6에서 이전하는 NServiceBus 버전 3.3.8 Saga가 있습니다. 업그레이드 한 후에 대기열에있는 단일 메시지가 사가에서 두 번 처리되는 것으로 나타났습니다. 가장 이상한 점은 내 IMessageModule 구현이 두 번 호출되기 때문에 NServiceBus가이를 두 개의 개별 전송 메시지로 처리한다는 것입니다.사가가 처리하는 단일 NServiceBus 메시지

받는 메시지는 NServiceBus 2.6에 바인딩 된 메시지입니다. 이걸 본 사람 있어요? 처음에는 Unity에서 Autofac으로 전환 할 때 종속성 삽입 문제라고 생각했지만 MessageModule이 두 번 호출되는 문제를 설명하지는 않습니다.

제공할만한 도움에 감사드립니다.

UPDATE

그것은 문제가 내가 실수로 만들었다 의존성 주입 문제라고 밝혀졌습니다. 사가에는 IBus가 필요한 몇 가지 추가 종속성이 있으며 IBus는 속성이며 속성 주입을 통해 설정됩니다. Autofac 모듈을 이용하여, I는 다음과 같이, 등록 된 모든 항목에 대한 속성을 AttachToComponentRegistration을 무시하고 주입함으로써 구성을 단순화하기 위해 시도 :

protected override void AttachToComponentRegistration(IComponentRegistry componentRegistry, IComponentRegistration registration) { 
    registration.Activating += (s, e) => e.Context.InjectProperties(e.Instance); 
} 

이것은, 그러나, 상술 한 문제를 일으켰다. 이 문제를 해결하기 위해이 오버라이드를 제거하고 다음을 호출하여 속성 삽입을 수동으로 설정했습니다.

builder.RegisterType<Implementation>().As<Interface>().PropertiesAutowired(); 

이렇게하면 중복 처리 문제가 해결되었습니다. 나는 왜 그것이 그 문제를 일으켰는지 아직도 확신하지 못하고 있지만, 그 오버라이드를 없애면 중복 된 메시지 처리를 막을 수 있었다.

+0

정상적인 처리기, 컨테이너 오류 및 이상한 중복 메시지로 비슷한 문제가 발생했습니다. 여기서 무슨 일이 일어나고있는거야? – brumScouse

답변

0

내가 부주의하게 만든 종속성 주입 문제가 문제 였다는 것이 밝혀졌습니다. 사가에는 IBus가 필요한 몇 가지 추가 종속성이 있으며 IBus는 속성이며 속성 주입을 통해 설정됩니다. Autofac 모듈을 이용하여, I는 다음과 같이, 등록 된 모든 항목에 대한 속성을 AttachToComponentRegistration을 무시하고 주입함으로써 구성을 단순화하기 위해 시도 :

protected override void AttachToComponentRegistration(IComponentRegistry componentRegistry, IComponentRegistration registration) { 
     registration.Activating += (s, e) => e.Context.InjectProperties(e.Instance); 
    } 

이것은, 그러나, 상술 한 문제를 일으켰다. 이 문제를 해결하기 위해이 오버라이드를 제거하고 다음을 호출하여 속성 삽입을 수동으로 설정했습니다.

builder.RegisterType<Implementation>().As<Interface>().PropertiesAutowired(); 

이렇게하면 중복 처리 문제가 해결되었습니다. 나는 왜 그것이 그 문제를 일으켰는지 아직도 확신하지 못하고 있지만, 그 오버라이드를 없애면 중복 된 메시지 처리를 막을 수 있었다.

+1

업데이트 해주셔서 감사합니다. –

관련 문제