我们希望跨不同的 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
中可用)。
是否有配置来确保只有目标消费者响应给定类型的消息?
谢谢,保罗