Kafka是否支持请求响应消息传递

Hec*_*tor 19 mom apache-kafka kafka-consumer-api kafka-producer-api

我正在调查Kafka 9作为业余爱好项目,并完成了一些"Hello World"类型示例.

我必须考虑基于请求响应消息传递的Real World Kafka应用程序,更具体地说,如何将Kafka请求消息链接到其响应消息.

我正在考虑使用生成的UUID作为请求消息密钥,并将此请求UUID用作关联的响应消息密钥.与WebSphere MQ具有消息关联ID的机制大致相同.

我的结束2结束过程将是.

1).Kafka客户端生成随机UUID并发送单个Kafka请求消息.2).服务器将使用此请求消息提取并存储请求UUID值3).使用消息有效内容完成业务流程.4).响应响应消息,该消息使用来自请求消息的存储的UUID值作为响应消息Key.5).Kafka客户端轮询响应主题,直到它超时或检索具有原始请求UUID值的消息.

我关注的是Kafka Consumer轮询将从响应主题中删除其他客户端消息,并增加偏移量,使其他客户端失败.

我是否尝试在一个用例中应用Kafka它从未设计过?

是否可以在Kafka中实现请求/响应消息传递?

Chr*_*ken 8

尽管Kafka提供了方便的方法来保持给定消费者群体的承诺抵消,但您不需要使用该行为,并且如果您认为有需要可以编写自己的行为.即便如此,使用Kafka的方式对于用例来说有点尴尬,因为每个客户端都需要反复搜索主题以获取特定的响应.这充其量只是效率低下.

您可以将问题分成两部分,继续使用Kafka向服务器发送请求和响应.您需要添加的唯一部分是客户端与之交谈的某种API层,它封装了客户端的Kafka特定逻辑.该层需要一个本地数据库(关系或NoSQL),可以通过uuid存储响应,使API能够非常快速,轻松地回答特定uuid的响应是否可用.

  • 这几乎违背了使用 Kafka 的初衷,并引入了一个额外的需要维护的活动部分。我建议,生产者要求 Zookeeper 提供一个独占分区(或主题+分区),并将其与生产者中的请求一起传递。处理程序看到要使用的(主题+)分区并在那里发送响应。返回后,释放 Zk 锁。 (2认同)