如何配置消费以处理不同的消息类型?(MassTransit)
How to config consume to work with different messages types?(MassTransit)
我使用 MassTransit 和 Azure 服务总线作为传输工具。我已经创建了实现 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 发布的消息?
您可以将两个接口放在同一个消费者中,如下所示。
public class AlertConsumer :
IConsumer<IAlert>,
IConsumer<IAlertExt>
{
public async Task Consume(ConsumeContext<IAlert> context){
...
}
public async Task Consume(ConsumeContext<IAlertExt> context){
...
}
}
两个接口将绑定到同一个消费者队列。
我使用 MassTransit 和 Azure 服务总线作为传输工具。我已经创建了实现 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 发布的消息?
您可以将两个接口放在同一个消费者中,如下所示。
public class AlertConsumer :
IConsumer<IAlert>,
IConsumer<IAlertExt>
{
public async Task Consume(ConsumeContext<IAlert> context){
...
}
public async Task Consume(ConsumeContext<IAlertExt> context){
...
}
}
两个接口将绑定到同一个消费者队列。