我在spring-kafka
中发现要启用idempotence
producer,我必须设置transactionIdPrefix
,但我不需要事务,只需要idempotence
。
public void setTransactionIdPrefix(String transactionIdPrefix) {
Assert.notNull(transactionIdPrefix, "'transactionIdPrefix' cannot be null");
this.transactionIdPrefix = transactionIdPrefix;
enableIdempotentBehaviour();
}
字符串
所以我必须定义transaction id
或idempotence
仍然会在默认kafka-client的重试ack
级别上工作?
1条答案
按热度按时间xxls0lw81#
您不需要启用事务来启用幂等;该代码存在是因为事务需要幂等性;用户必须没有将其配置为假。
有关如何设置任意Kafka属性的信息,请参阅 Boot 文档:
https://docs.spring.io/spring-boot/docs/current/reference/html/messaging.html#messaging.kafka.additional-properties
自动配置支持的属性在附录的“集成属性”部分中显示。请注意,在大多数情况下,这些属性(连字符或camelCase)直接Map到Apache Kafka点属性。请参阅Apache Kafka文档了解详细信息。
名称中不包含客户端类型(生产者、消费者、管理员或流)的属性被认为是通用的,并适用于所有客户端。如果需要,可以为一个或多个客户端类型重写这些公共属性中的大多数。
Apache Kafka指定属性的重要性为HIGH、MEDIUM或LOW。Sping Boot 自动配置支持所有HIGH重要性属性,一些选定的MEDIUM和LOW属性,以及任何没有默认值的属性。
Kafka支持的属性中只有一个子集可以直接通过KafkaProperties类获得。如果要使用不直接支持的其他属性配置单个客户端类型,请使用以下属性:
字符串
或者是
型
这将公共prop.one Kafka属性设置为first(适用于生产者、消费者、管理员和流),prop.two admin属性设置为second,prop.three消费者属性设置为第三,prop.four生产者属性设置为第四,prop.five streams属性设置为第五。
在任何情况下,如果您没有更改相关属性,则默认情况下将启用该选项;请参阅https://kafka.apache.org/documentation/#producerconfigs_enable.idempotence