首页 > 解决方案 > 管理一个 Kafka 主题的多个消费者的消息

问题描述

我正在实施一个利用 Apache Kafka 的工作流程,其中我有多个生产者和多个消费者。

简而言之,类似于订单处理工作流程,其中:

我为我的消费者创建了一个“订单”类型的对象,以使用 State 作为局部变量进行处理,每个消费者在完成后都会更新该变量。

使用上述多个生产者/消费者和一个主题的方法,我看到了维护消息状态(已验证、已确认仓库、已发送等)的问题,其中每个消费者必须处理所有消息并检查状态是否与当前消费者的责任相对应. 同样使用这种方法,所有消费者都必须属于不同的消费者组才能接收所有消息(这并不理想)并因此确认所有消息(即使是那些不是发往他们的消息)。

我考虑的其他方法是创建多个主题(每个“状态”一个,但在这种情况下,我的“订单”消息将用于发布到多个主题,这似乎违反了 Kafka 原则。

我还可以创建不同的“类型”订单,即 ValidatedOrder、WarehouseConfirmedOrder、DispatchedOrder,从而在我的消费者中删除状态检查,而是引入一个“类型”过滤器,这似乎与我原来的状态解决方案非常相似。

在这里可以应用哪些最佳实践和替代技术?

您可以指出上述任何文件吗?

标签: design-patternsapache-kafkakafka-consumer-apikafka-producer-api

解决方案


推荐阅读