首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >幂等与交易

幂等与交易
EN

Stack Overflow用户
提问于 2018-07-30 09:00:34
回答 1查看 3.8K关注 0票数 3

我正在探讨卡夫卡的交易,我想了解所有的细节。

我在Spring中注意到,当您提供一个transactionsalId时,幂等函数是启用的。

代码语言:javascript
复制
public void setTransactionIdPrefix(String transactionIdPrefix) {
    Assert.notNull(transactionIdPrefix, "'transactionIdPrefix' cannot be null");
    this.transactionIdPrefix = transactionIdPrefix;
    enableIdempotentBehaviour();
}

乍一看,我认为Spring在交易中启用了幂等功能,因为它是“良好的”。我认为这是为了确保事务中的语义准确一次。

我做了更多的调查,发现事务的工作需要幂等函数。在基普-98中提到了这一点

注意,如果配置了enable.idempotence,则必须启用TransactionalId。

Kafka幂等是一个功能,以避免重复的消息,如网络错误后,该消息已发送。

我的理解是,卡夫卡交易基本上是写到一个内部主题和幂等必须启用,以避免重复。

Idempotent为生产者提供了精确的一次语义。

事务为传递性启用了精确的一次语义;使用->产品。

我的理解正确吗?

究竟是什么使--只为消费者提供一次?提交偏移、幂等或事务。

EN

回答 1

Stack Overflow用户

发布于 2018-07-30 12:40:17

幂等生成器针对单个主题为生产者启用了一次。基本上,每个消息发送都有更大的保证,并且不会在出现错误时被复制。

另一方面,事务生成器允许将多个send (可以跨多个分区)分组,并将它们全部应用(或不应用)。事务还可以包含偏移提交(最后,执行偏移量与写入主题相同)。

因为消费者从卡夫卡那里获取数据,这差不多已经是一次了。当消费者要求卡夫卡信息从偏移N,如果它没有收到他们,它将只是重试,不能有任何重复。对COnsumers的唯一一次需要是提交偏移,这可以由事务性生产者来完成(使用者需要将其当前的偏移量传递给生产者)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51590351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档