2016-11-21 1 views
1

전송으로 MassTransit 및 Azure 서비스 버스를 사용하고 있습니다. 나는 IAlert를 구현 한 IAlert와 IAlertExt를 만들었습니다. 나는이 메시지를 게시하려고 해요 :다른 메시지 유형으로 작동하도록 구성하는 방법 (MassTransit)

busControl.Publish<IAlert>(new Alert(customerId)); 
busControl.Publish<IAlertExt>(new AlertExt(customerId)); 

을 그리고 메시지를 처리하기 위해 소비자를 쓰기 :

public class AlertConsumer : IConsumer<IAlert> 
    { 
     public async Task Consume(ConsumeContext<IAlert> context){ 
      ... 
     } 
    } 

public class AlertExtConsumer : IConsumer<IAlertExt> 
    { 
     public async Task Consume(ConsumeContext<IAlertExt> context){ 
      ... 
     } 
    } 

지금 후 모두 소비자가 일반적인 인터페이스로 출판 되었음 하나의 메시지를 검색 게시 할 수 있습니다.

강제로 AlertExtConsumer가 IAlertExt 및 IAlert와 함께 게시 된 메시지를 검색하는 방법은 무엇입니까?

답변

2

아래와 같이 동일한 소비자에 두 인터페이스를 넣을 수 있습니다.

public class AlertConsumer : 
    IConsumer<IAlert>, 
    IConsumer<IAlertExt> 
{ 
    public async Task Consume(ConsumeContext<IAlert> context){ 
     ... 
    } 
    public async Task Consume(ConsumeContext<IAlertExt> context){ 
     ... 
    } 
} 

두 인터페이스는 동일한 소비자 대기열에 바인딩됩니다.

관련 문제