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

在Kafka Stream中只处理一次配置是否保证只读取提交的读取?

邓崇凛
2023-03-14

有一系列关于Kafka交易和一次性交付的优秀文章
在其中一篇文章中,作者谈到了消费者:

因此,在消费者端,您有两个选项来读取事务性消息,通过“isolation.level”消费者配置来表示:

read_committed:除了读取不属于事务的消息外,还可以在事务提交后读取属于事务的消息。

read_uncommitted(读取未提交):按偏移顺序读取所有消息,而无需等待事务提交。此选项类似于Kafka消费者的当前语义。

也就是说,正常的消费者应用程序必须指定read_committed如果只希望从主题读取提交写入。

然而,关于Kafka流:

要使Streams应用程序只使用一次语义学,只需将此配置设置为“processing.guarantee=exactly_once”。这会导致所有处理只发生一次;这包括使处理和写回Kafka的处理作业创建的所有物化状态都只发生一次。

没有明确说明KStream中的读取。当配置了之后,KStream是否只读取提交的消息?


共有1个答案

卞坚成
2023-03-14

是的,KStream只会读取已提交的消息,它在留档中没有明确说明,但在StreamsConfig JavaDoc中您会找到以下信息:

如果processing.guarantee设置为exactly_once,则Kafka Streams不允许用户覆盖以下属性(括号中显示的Streams设置):isolation.level(read_committed)-消费者将始终只读取提交的数据enable.idempotence(true)-生产者将始终启用幂等max.in.flight.requests.per.connection(5)-生产者将始终为每个连接提供一个动态请求

 类似资料:
  • 进度条可以获取到,但是我获取不到blob了。提示错误 TypeError: Failed to execute 'blob' on 'Response': body stream already read。

  • 本文向大家介绍解决spring 处理request.getInputStream()输入流只能读取一次问题,包括了解决spring 处理request.getInputStream()输入流只能读取一次问题的使用技巧和注意事项,需要的朋友参考一下 一般我们会在InterceptorAdapter拦截器中对请求进行验证 正常普通接口请求,request.getParameter()可以获取,能多次读

  • 问题内容: 当我要在表上执行查询时,出现错误消息: 1036-表是只读的。 我该如何解决? 中的表格属性设置为。 “修复表”功能似乎无济于事。 有什么我可以做的吗? 问题答案: 谁拥有/ var / db / mysql以及他们属于哪个组,应该是mysql:mysql。您还需要重新启动mysql才能使更改生效 还要检查当前登录的用户是否具有GRANT访问权限以进行更新

  • 我是Vuejs的新手,每次按键都会收到以下警告: 和 不过,这些警告似乎根本不会影响可用性。我在任何地方都没有调用$attrs或$listeners,我不确定这些警告来自哪里。 这是我的头_组件。vue: 谢谢你的帮助!

  • 试图实现Spring批处理,但面临一个奇怪的问题,我们的类只执行了一次。 以下是细节。 如果我们在DB中有1000行。 我们的项目阅读器从DB中获取1000行,并将列表传递给 成功删除所有项目。 现在ItemReader再次尝试从数据库中获取数据,但没有找到,因此返回NULL,因此执行停止。 但是我们已经将批处理配置为使用调度器执行,这是每分钟执行一次。 现在,如果我们通过转储导入在DB中插入让我