当前位置: 首页 > 知识库问答 >
问题:

Kafka:如何获得消费者的回应?

呼延光明
2023-03-14

我想描述以下场景:我有一个节点。js后端应用程序(它使用单线程事件循环)。这是系统的总体架构:Producer-

假设制作者向Kafka发送了一条消息,这条消息的目的是在数据库中进行某个查询并检索查询结果。但是,众所周知Kafka是一个异步系统。如果制作者向Kafka发送消息,它会得到一个响应,表明该消息已被Kafka经纪人接受。Kafka broker不会等到消费者轮询消息并处理它。

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

共有2个答案

江英华
2023-03-14

您必须生成新的流以传递查询结果:

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

您应该考虑使用另一种同步通信机制,如HTTP。

卜泓
2023-03-14

使用 Kafka 的流程将如下所示:

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

正如您已经提到的,这个流程是异步的。当您的查询处理量非常大时,比如生成报告或类似的事情,第二个生成器会通知用户收件箱,这就非常有用。

如果不是这种情况,也许您应该使用 HTTP,它是同步的,您将在处理结束时获得响应。

 类似资料:
  • 本文向大家介绍Kafka 的消费者如何消费数据相关面试题,主要包含被问及Kafka 的消费者如何消费数据时的应答技巧和注意事项,需要的朋友参考一下 消费者每次消费数据的时候,消费者都会记录消费的物理偏移量(offset)的位置 等到下次消费时,他会接着上次位置继续消费

  • 我刚刚注意到,当我在分区中生成单个消息时,我的使用者不会收到它。只有在我在同一分区中生成了更多的消息之后,使用者才会收到它们。我的数设置为 1。 是否有其他一些配置可能会影响这里? 每个分区都有一个专用的消费者。 相关部件的使用者代码。我的使用者为 定义的不同主题启动多个线程。使用 https://github.com/mmustala/rdkafka-ruby 这是原始消费宝石的叉子。我添加了一

  • 是否有一种方法以编程方式访问和打印使用者滞后偏移,或者说使用者读取的最后一条记录的偏移与某个生产者写入该使用者分区的最后一条记录的偏移之间的位置差。 要知道我的最终目标是将这个值发送到prometheus进行监视,我应该在上面添加哪些语句来得到滞后偏移值?

  • Flink kafka消费者有两种类型的消费者,例如: 这两个消费者层次结构扩展了相同的类。我想知道维护编号类背后的设计决策是什么?我们什么时候应该使用其中一种? 我注意到带有数字后缀的类有更多的特性(例如ratelimiting)。 https://github.com/apache/flink/blob/master/flink-connectors/flink-connector-kafka

  • 我刚接触Kafka,很少阅读教程。我无法理解使用者和分区之间的关系。 请回答我下面的问题。 > 消费者是否由ZK分配到单个分区,如果是,如果生产者将消息发送到不同的分区,那么其他分区的消费者将如何使用该消息? 我有一个主题,它有3个分区。我发布消息,它会转到P0。我有5个消费者(不同的消费者群体)。所有消费者都会阅读P0的信息吗?若我增加了许多消费者,他们会从相同的P0中阅读信息吗?如果所有消费者

  • 我在Kafka做数据复制。但是,kafka日志文件的大小增长很快。一天内大小达到5 gb。作为这个问题解决方案,我想立即删除处理过的数据。我正在使用AdminClient中的delete record方法删除偏移量。但当我查看日志文件时,对应于该偏移量的数据不会被删除。 我不想要类似(log.retention.hours,log.retention.bytes,log.segment.bytes