[英]Is it necessary to use transactions explicitly in Kafka Streams to get "effectively once" behaviour?
使用 Kafka Streams 庫編寫的流處理應用程序可以通過簡單地更改單個配置來打開恰好一次語義,將名為“processing.guarantee”的配置設置為“exactly_once”(默認值為“at_least_once”),無需代碼需要改變。
但是由於據說使用了事務,我想知道: Kafka Streams 是否隱式使用事務,還是必須顯式使用它們?
換句話說,我是否必須調用諸如.beginTransaction()
和.commitTransaction()
,還是所有這些都在.commitTransaction()
,剩下的就是微調commit.interval.ms
和cache.max.bytes.buffering
?
Kafka Streams 使用事務 API 來隱式地實現一次性語義,因此您不需要設置任何其他配置。
如果您繼續閱讀博客,它會說:
“更具體地說,當
processing.guarantee
被配置為exactly_once
,Kafka Streams 使用事務 ID 設置內部嵌入式生產者客戶端以啟用冪等性和事務性消息傳遞功能,並將其消費者客戶端設置為只讀模式以僅獲取消息來自上游生產商的承諾交易。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.