Apache kafka 卡夫卡:如何从消费者那里获取响应?
我想描述以下场景: 我有一个node.js后端应用程序(它使用单线程事件循环)。 这是系统的总体架构: 制作人->卡夫卡->消费者->数据库 假设生产者向Kafka发送了一条消息,该消息的目的是在数据库中进行某种查询并检索查询结果。 然而,众所周知,卡夫卡是一个异步系统。如果生产者向卡夫卡发送消息,它将得到一个响应,表明该消息已被卡夫卡代理接受。Kafka broker不会等到消费者轮询消息并对其进行处理Apache kafka 卡夫卡:如何从消费者那里获取响应?,apache-kafka,Apache Kafka,我想描述以下场景: 我有一个node.js后端应用程序(它使用单线程事件循环)。 这是系统的总体架构: 制作人->卡夫卡->消费者->数据库 假设生产者向Kafka发送了一条消息,该消息的目的是在数据库中进行某种查询并检索查询结果。 然而,众所周知,卡夫卡是一个异步系统。如果生产者向卡夫卡发送消息,它将得到一个响应,表明该消息已被卡夫卡代理接受。Kafka broker不会等到消费者轮询消息并对其进行处理 在这种情况下,生产者如何获得对数据库进行操作的查询结果?您必须生成新流来传达查询结果: C
在这种情况下,生产者如何获得对数据库进行操作的查询结果?您必须生成新流来传达查询结果:
Consumer (now its a producer) -> Kafka topic -> Producer (now its a consumer)
您应该考虑使用另一种“强>同步通信机制,如HTTP .< /P> < P>使用卡夫卡的流程将是这样的:
生产者A了解消费者A消费的消息发生了什么的唯一方法是生成另一条消息。将由任何其他可用的消费者相应地处理(在本例中,消费者B) 正如您已经提到的,这个流是异步的。当您对查询进行非常繁重的处理时,例如生成报告或类似的事情,并且第二个生产者将通知用户收件箱时,这可能非常有用 如果不是这样,也许您应该使用HTTP,它是同步的,您将在处理结束时得到响应