我使用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发布的消息?
答案 0 :(得分:4)
您可以将两个接口放在同一个使用者中,如下所示。
public class AlertConsumer :
IConsumer<IAlert>,
IConsumer<IAlertExt>
{
public async Task Consume(ConsumeContext<IAlert> context){
...
}
public async Task Consume(ConsumeContext<IAlertExt> context){
...
}
}
两个接口都将绑定到同一个使用者队列。