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

只有一次,Kafka才是可能的主张

刘曾琪
2023-03-14

关于合流博客

只有一次语义是可能的:Kafka就是这样做的

精确一次语义学:即使生产者重试发送消息,它也会导致消息仅一次传递给最终消费者。精确一次语义学是最理想的保证,但也是一个很少被理解的保证。这是因为它需要消息传递系统本身与生成和消费消息的应用程序之间的合作。例如,如果在成功消费消息后,您将Kafka消费者倒带到上一个偏移量,您将再次收到从该偏移量到最新偏移量的所有消息。这说明了为什么消息传递系统和客户端应用程序必须合作才能实现精确一次语义学。

>

在我上一篇帖子中,Kafka的人说,Confluent负责所有这些事情。那么,我是否可以假设,使用Kafka连接与融合意味着我将得到一次行为保证,还是没有?

共有1个答案

浦琪
2023-03-14

客户端仍有工作要做。他们(Confluent)自己承认,Kafka这样做的说法有点过于乐观。

cricket_007暗示并证实了我的观点,即一次语义学。

正如他指出的,一些融合连接器确实有保证——尽管这是众所周知的。

 类似资料:
  • 我用的是Kafka2,看起来只有一次 Kafka流 Kafka读取/转换/写入事务生产者 Kafka连接 在这里,上述所有工作在主题之间(源和目标是主题)。 有可能与其他目的地只进行一次航班吗?

  • 我的目标是从主题A消费,做一些处理和生产到主题B,作为单个原子动作。要做到这一点,我有两种选择: null 我已成功验证选项#1。所谓成功,是指如果我的处理失败(抛出IllegalArgumentException),来自主题A的已消费消息将继续被KafKalistener消费。这是我所期望的,因为没有提交偏移量,而使用了DefaultAfterRollbackProcessor。 我希望看到相同

  • ConsumerThread1-[topic1-0,topic2-0,topic3-0] ConsumerThread2-[topic1-1,topic2-1,topic3-1] 但是,我们希望每个主题有一个使用者线程,而不是每个分区有一个KafkaListener(或使用者线程)。例如: ConsumerThread1-[topic1-0,topic1-1] ConsumerThread2-[t

  • 我正试图让Kafka的消费者消费一次<我的要求是: 从Topic读取数据 处理数据[涉及调用另一个API] 将响应写回Kafka 我想知道在这种情况下是否可以完全一次? 我知道用例满足Kafka流API,但我想从生产者/消费者API中知道?此外,如果让我们说在处理数据后,消费者因某种原因失败(处理应该只完成一次),那么处理此类情况的最佳方法是什么? 此类情况可以有任何延续/检查点吗? 我知道Kaf

  • 我试图用事务性生产者/消费者来准确地理解Kafka。 我遇到了下面的例子。但是,我还是很难准确地理解一次。这个代码正确吗? 制作人sendOffsetsToTransaction-此代码的作用是什么?这是否应该针对同一个目标主题? 什么是消费者之前的系统崩溃。commitSync();//将再次读取相同的消息并生成重复消息?

  • 当我只打开一次处理时,我会得到以下错误。注意:我们的应用程序非常安全,我们只允许Kafka用户和消费者访问他们明确需要的资源。 只有一次处理kafka流是否在所有流任务中使用每个流任务的消费者组而不是消费者组?