apache-kafka - Kafka:使用 Apache Beam 进行一次语义配置
问题描述
我正在尝试在 Kafka(Apache Beam)中配置一次语义。以下是我将要介绍的更改:
制片人:
enable.idenpotence
= 真transactional.id
= uniqueTransactionalId
消费者:
设置
enable.auto.commit
=假// 将以下内容添加到消费者构建器:
.commitOffsetsInFinalize()
.withReadCommitted()
在构建器中添加了以下内容KafkaIO#write
:
.withEOS(numShards, sinkGroupId)
有谁知道在 Apache Beam KafkaIO 中还应该改变什么来实现一次语义?
上面的配置看起来不错还是我误解了smth?
transactional.id
如果我不使用事务 API(因为我在 apache Beam 中没有明确的生产者),是否需要指定属性?
解决方案
好吧,看起来我终于找到了符合我要求的正确设置。这是我最终得到的结果:
1)KafkaIO.Read
:
- 更新消费者属性
enable.auto.commit = false
.withReadCommitted()
.commitOffsetsInFinalize()
2)KafkaIO#write
:
.withEOS(numShards, sinkGroupId)
它还将启用幂等性并
transactional.id
为生产者设置幕后。
因此,通过这样的设置,我们将在读取时具有至少一次语义,在写入时具有精确一次语义。
推荐阅读
- php - 如何将子文件夹别名或重写为域
- java - Javafx单选按钮定向绑定
- c - 标志 O_CREAT 不创建文件
- javascript - 进度条背景颜色未在 jquery 中显示
- php - 使用 unlink 方法从路径和数据库中删除图像
- javascript - 我可以将类添加到动态创建的 two.js 元素吗?
- android - 想要在我的 android 应用程序中显示存储在 onedrive 上的 .html 文件的 HTML 输出
- db2 - 如何为 db2 表中的行子集创建唯一索引
- css - 对齐表格,居中(td)并将文本留在 td 内
- java - Java:替代声明空构造函数以从另一个类初始化对象