【问题标题】:Differentiate target consumer in MassTransit区分 MassTransit 中的目标消费者
【发布时间】:2021-04-08 08:27:33
【问题描述】:

很少有消费者在听一个 Kafka 主题。消息有一个参数,通过该参数可以确定哪个消费者需要使用它。 MassTransit 使用什么机制来实现这样的解决方案?

【问题讨论】:

    标签: apache-kafka masstransit


    【解决方案1】:

    作为explained in the interoperability documentation,MassTransit 使用messageType 标头来确定序列化消息正文中存在哪些消息类型。如果没有消息类型,比如使用 RawJson 消息反序列化器时,它会将消息传递给所有注册的消费者。

    现在,对于 Kafka,类型本身是 TopicEndpoint 配置的一部分,因此只有该消息类型被分派到端点。根据序列化(AVRO、Json 等),体验取决于消息类型是否可用。

    您当然可以编写自己的反序列化器,使用该参数来确定消息中包含哪些消息类型,并编写您自己的反序列化器以使用支持的类型正确响应TryGetMessage<T>。最好的例子是 JsonConsumeContext 或最近更新的 RawJsonConsumeContext,现在支持用于消息识别的传输标头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多