Dav*_*vid 4 apache-kafka kafka-consumer-api kafka-producer-api
我正在创建一个系统,其中前端服务将消息推送到 Kafka 的“请求”主题,并为某些下游后端消费者(实际上是一个最终推回 Kafka 的复杂系统)侦听另一个“响应”主题以进行处理在“请求”消息上并最终推送到“响应”主题。
我试图找出最优雅的方法来确保消费者侦听适当的分区并收到响应,并且后端推送到前端消费者正在侦听的分区。我们总是需要确保响应发送到产生初始消息的同一个消费者。
到目前为止,我有两个解决方案,但都不是特别令人满意。任何想法或想法将不胜感激:
这似乎应该是一种常见模式,所以我想知道其他人是如何解决这个问题的。
请不要使用手动分配分区的消费者。它可能会变得非常混乱并且难以扩展。
您可以使用每个前端消费者的主题来代替分区。每个前端服务都会生成一条消息,其中包含前端服务的request主题ID 。然后后端使用消息并根据 id 生成对特定unique-front-end-service-response主题的响应消息。如果您有固定数量的前端服务,这可能是一个很好的解决方案。可能的缺点是每次要添加新的前端服务时都会创建一个新主题。然而,它比手动分区分配更容易维护。
另一种可能的解决方案是使用不同的工具。如果 Kafka 不是强制性的,请重新考虑您的要求并进行研究。可能有一种工具比 Kafka 更适合您的需求。
| 归档时间: |
|
| 查看次数: |
1246 次 |
| 最近记录: |