如果http请求超时,我正在尝试中断当前线程。我已经将PlatformTransactionManager设置为Kafka事务作为一个bean。我在方法级别使用了@Transactional注解。我们将在3个主题中发布消息。在第一个主题中发布消息后,我放入Thread.sleep(5000),如果执行时间超过6秒,当前线程将从过滤器中断。因此,这里的通话被打断了,但消息正在发布到Kafka。我们只是在产生信息。我们没有消费任何消息,但能够在我们内部的Kafka检查工具中看到消息。我们使用KafkaTemplate.send()来发送消息。
发布于 2021-09-07 15:44:24
生产者记录始终写入日志,即使回滚也是如此。在发布的记录后面的槽中有一个特殊的记录,用于指示事务是提交还是回滚。
消费者的isolation.level默认为read_uncommitted,您需要将其设置为read_committed以避免看到回档记录。
https://kafka.apache.org/documentation/#consumerconfigs_isolation.level
https://stackoverflow.com/questions/69063562
复制相似问题