首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向卡夫卡消费者传达卡夫卡生产者是完整的?

如何向卡夫卡消费者传达卡夫卡生产者是完整的?
EN

Stack Overflow用户
提问于 2017-10-23 10:55:04
回答 1查看 698关注 0票数 2

我有一个场景,其中生产者生成有限的数量的消息,以及一组属于消费者组的消费者使用和处理消息。

所有传递生产者已经完成有限消息排队的消费者的理想方式是什么?我在想下面的方法

  1. 向所有消费者广播一个完整的信息
  2. 生产者更新外部db/file中的状态

卡夫卡是否有任何内在特征来实现这一目标?

EN

回答 1

Stack Overflow用户

发布于 2017-10-23 11:15:59

Kafka没有提供任何功能来实现这一点,因为它主要面向流用例。

我认为你的想法是朝着正确的方向发展的,你需要以某种方式使制片人能够与消费者直接沟通,如何实现这一目标当然会有很多种可能性:

  • 更新外部文件/db
  • 使使用者能够接收rest呼叫
  • 将元事件写入Kafka主题,被消费者忽略,但表示流的结束。
  • ..。

然而,对于所有这些方法,都要记住一些绊脚石。

分区

如果您的主题有几个分区,您就不能简单地向主题发送一条已完成的消息,因为这将只分配给其中一个分区。由于排序只能保证每个分区,所以消费者在处理来自其他主题的消息之前完全有可能读取已完成的消息,这些主题也应该被读取并停止处理。在这种情况下,您需要确保向每个分区发送一个完成事件,并且您的使用者也需要知道这个概念,并继续阅读,直到它为每个订阅的分区得到一条完成消息。

复制

如果您选择使用外部触发器,您可能需要告诉您的使用者在完成之前要接收多少个事件。但是,在有些情况下,如果使用者在提交读偏移量之前崩溃,那么它可能会读取两次消息--例如,在这种情况下,仅仅发送多个发送值的消息是不够的,因为这些重复项将意味着您正在忽略最后的消息。与第一个想法一样,您希望将生产者为每个分区发送的最后一个偏移量发送给您的使用者,以便它知道要读取的偏移量,直到每个分区。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46887639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档