如何配置使用以使用不同的消息类型?(MassTransit)

时间:2016-11-21 16:16:11

标签: c# azure azureservicebus masstransit

我使用MassTransit和Azure Service Bus作为传输。我创建了实现IAlert的IAlert和IAlertExt。 我正在尝试发布两条消息:

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发布​​的消息?

1 个答案:

答案 0 :(得分:4)

您可以将两个接口放在同一个使用者中,如下所示。

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

两个接口都将绑定到同一个使用者队列。