Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 卡夫卡:如何从消费者那里获取响应?_Apache Kafka - Fatal编程技术网

Apache kafka 卡夫卡:如何从消费者那里获取响应?

Apache kafka 卡夫卡:如何从消费者那里获取响应?,apache-kafka,Apache Kafka,我想描述以下场景: 我有一个node.js后端应用程序(它使用单线程事件循环)。 这是系统的总体架构: 制作人->卡夫卡->消费者->数据库 假设生产者向Kafka发送了一条消息,该消息的目的是在数据库中进行某种查询并检索查询结果。 然而,众所周知,卡夫卡是一个异步系统。如果生产者向卡夫卡发送消息,它将得到一个响应,表明该消息已被卡夫卡代理接受。Kafka broker不会等到消费者轮询消息并对其进行处理 在这种情况下,生产者如何获得对数据库进行操作的查询结果?您必须生成新流来传达查询结果: C

我想描述以下场景: 我有一个node.js后端应用程序(它使用单线程事件循环)。 这是系统的总体架构: 制作人->卡夫卡->消费者->数据库

假设生产者向Kafka发送了一条消息,该消息的目的是在数据库中进行某种查询并检索查询结果。 然而,众所周知,卡夫卡是一个异步系统。如果生产者向卡夫卡发送消息,它将得到一个响应,表明该消息已被卡夫卡代理接受。Kafka broker不会等到消费者轮询消息并对其进行处理


在这种情况下,生产者如何获得对数据库进行操作的查询结果?

您必须生成新流来传达查询结果:

Consumer (now its a producer) -> Kafka topic -> Producer (now its a consumer)

您应该考虑使用另一种“强>同步通信机制,如HTTP .< /P> < P>使用卡夫卡的流程将是这样的:

生产者A了解消费者A消费的消息发生了什么的唯一方法是生成另一条消息。将由任何其他可用的消费者相应地处理(在本例中,消费者B

正如您已经提到的,这个流是异步的。当您对查询进行非常繁重的处理时,例如生成报告或类似的事情,并且第二个生产者将通知用户收件箱时,这可能非常有用

如果不是这样,也许您应该使用HTTP,它是同步的,您将在处理结束时得到响应