簡體   English   中英

是否有必要在 Kafka Streams 中顯式使用事務來獲得“有效一次”的行為?

[英]Is it necessary to use transactions explicitly in Kafka Streams to get "effectively once" behaviour?

Confluence 的一篇文章指出

使用 Kafka Streams 庫編寫的流處理應用程序可以通過簡單地更改單個配置來打開恰好一次語義,將名為“processing.guarantee”的配置設置為“exactly_once”(默認值為“at_least_once”),無需代碼需要改變。

但是由於據說使用了事務,我想知道: Kafka Streams 是否隱式使用事務,還是必須顯式使用它們?

換句話說,我是否必須調用諸如.beginTransaction().commitTransaction() ,還是所有這些都在.commitTransaction() ,剩下的就是微調commit.interval.mscache.max.bytes.buffering

Kafka Streams 使用事務 API 來隱式地實現一次性語義,因此您不需要設置任何其他配置。

如果您繼續閱讀博客,它會說:

“更具體地說,當processing.guarantee被配置為exactly_once ,Kafka Streams 使用事務 ID 設置內部嵌入式生產者客戶端以啟用冪等性和事務性消息傳遞功能,並將其消費者客戶端設置為只讀模式以僅獲取消息來自上游生產商的承諾交易。”

更多細節可以在KIP-129: Streams Exactly-Once Semantics 中找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM