Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka Micronaut kafka:无法准确使用一次kafka消息语义_Apache Kafka_Micronaut - Fatal编程技术网

Apache kafka Micronaut kafka:无法准确使用一次kafka消息语义

Apache kafka Micronaut kafka:无法准确使用一次kafka消息语义,apache-kafka,micronaut,Apache Kafka,Micronaut,我正在使用micronaut kafka设置我的制作人。我正在使用@KafkaClient注释设置所有生产者配置 Micronaut kafka允许我设置所有参数以设置事务生产者。 当我推送消息时,我得到一个异常,说 io.micronaut.messaging.exceptions.MessagingClientException: Exception sending producer record: Cannot perform 'send' before completing a call

我正在使用micronaut kafka设置我的制作人。我正在使用@KafkaClient注释设置所有生产者配置 Micronaut kafka允许我设置所有参数以设置事务生产者。 当我推送消息时,我得到一个异常,说

io.micronaut.messaging.exceptions.MessagingClientException: Exception sending producer record: Cannot perform 'send' before completing a call to initTransactions when transactions are enabled.
回顾mirconaut文档,它似乎要求您使用kafkaproducerapi来实现此功能

据我所知,KafkaProducer.initTransactions()方法需要在启动事务之前被调用,并且看起来它并没有发生


有人在实现这一点时遇到过类似的问题吗?

我想,您正在使用单节点集群进行开发,对吗?如果是这样,您应该在本地集群上配置transaction.state.log.min.isr=1和transaction.state.log.replication.factor=1。默认情况下,它们都预配置为3。

还有一段来自confluent

处理。保证

应使用的加工保证。可能的值为“至少一次”(默认值)和“恰好一次”。请注意,如果仅启用一次处理,则参数commit.interval.ms的默认值将更改为100ms。此外,使用者配置为隔离.level=“read_committed”,生产者配置为重试次数=Integer.MAX_值,并根据默认值启用.idemptence=true。请注意,“一次精确”处理在默认情况下需要至少包含三个代理的集群,这是推荐的生产设置。对于开发,您可以通过将transaction.state.log.replication.factor和transaction.state.log.min.isr中的代理设置调整为您想要使用的代理数量来更改此设置。

我实际上使用的是单节点群集。这可能是一个原因。我在使用spring时没有发现问题。可能是spring在内部解决了这个问题,我不知道它如何知道我是否在使用单节点集群。请注意,在使用嵌入式kafka进行测试时,需要使用上述isr和复制设置。我没有收到gitter或此处的任何答复,micronaut文档也不清楚。我不确定它是否有效。但对任何想尝试的人来说都值得一试