이벤트 당 두 번 이상 호출되는 핸들러와 관련된 신비한 문제가 인터페이스 상속을 통해 작성된 이벤트와 상관 관계가있는 것 같습니다.NServiceBus : 이벤트, 다중 상속, 이벤트 당 두 번 이상 호출되는 핸들러
우리는 메시지에 인터페이스 만 사용하고 NServiceBus.MessageInterfaces.MessageMapper.Reflection.MessageMapper().CreateInstance()
을 사용하여 버스에 넣을 인스턴스를 만듭니다.
우리의 인터페이스 :
IOperationOccured
는 - 매우 일반적인 방법으로 일에이 사건 행위에 대한 기본 동작 정보, 가입자를 포함합니다. 이 이벤트는 절대로 직접 제기되지 않습니다.
ISpecificOperationOccured
- 상속 IOperationOccured
. 보다 구체적인 정보가 들어 있습니다. 이 이벤트의 구독자는 이벤트가보다 구체적이기 때문에 더 구체적인 작업을 수행 할 수 있습니다.
ISpecificOperationOccured
이 발생하면 IOperationOccured
의 처리기가 호출되고 ISpecificOperationOccured
의 처리기가 호출 된 다음 메시지가 다시 처리되어 처리기를 다시 호출하는 것으로 나타납니다.
내가 뭘 잘못 알고 있니? 나는 IOperationOccured
에 대한 핸들러가 이벤트 당 한 번 호출되고 ISpecificOperationOccured
에 대한 핸들러는 이벤트 당 번으로 번 호출되기를 기대합니다.
당신은 단지 대신 인터페이스의 인스턴스를 Bus.CreateInstance()를 할 수 있습니다. –
비슷한 계층 구조로 테스트 솔루션에서 이것을 재현 할 수 없었습니다. 핸들러가 설정되는 방법과 구체적인 메시지 구현을 보여줄 수 있습니까? –
@Udi Dahan : MessageMapper 사용보다 실질적인 차이가 있습니까? 실제로 MessageMapper에 몇 가지 유효성 검사 코드를 포함 시켰습니다 ... – brendanjerwin