2016-11-21 4 views
1

私は、MassTransitとAzure Service Busをトランスポートとして使用しています。私はIAlertを実装したIAlertとIAlertExtを作成しました。 私は2つのメッセージ公開しようとしています:異なるメッセージタイプで動作するようにコンフィグレーションする方法(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){ 
     ... 
    } 
} 

両方のインターフェイスが同じコンシューマキューにバインドされます。

関連する問題