MassTransit消费者能否被消息合约类名触发

问题描述 投票:0回答:0

我们希望跨不同的 Azure Web 应用程序将 MassTransit 与 Azure 服务总线结合使用。为了与现有模式保持一致,我们希望通过消息类型定义消费者和他们响应的消息。如果两个消息类型具有相同的成员,似乎所有注册了具有相同成员的类型的消费者都会被触发。

eg

Consume(ConsumeContext<OrderCancelled> context)
Consume(ConsumeContext<OrderCreated> context)
类都是:

  public record OrderCancelled(int OrderId, DateTime Date)

  public record OrderCreated(int OrderId, DateTime Date)

我已经按照这些思路做了一些事情,当其中一条消息发布到这些消费者订阅的 Azure 服务总线主题上时,这两个消费者都会被调用。 我注意到 MassTransit 在消息中添加了一个自定义字段:

MT-MessageType: urn:message:Business.Messages.Events:OrderCancelled

所以它确实有一些方法知道使用哪种类型发送消息,即使

context.Message
是反序列化的JSON。 (此 MT-MessageType 在
context.ReceiveContext.TransportHeaders
中可用)。

是否有配置来确保只有目标消费者响应给定类型的消息?

谢谢,保罗

azureservicebus masstransit
© www.soinside.com 2019 - 2024. All rights reserved.