作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Spring-Kafkas ChainedKafkaTransactionManager,我看不出在 Spring Boot 微服务上下文中实现事务发件箱模式有任何意义。
将消息生产者(即 KafkaTemplate 的 send 方法)和 DB 操作放在同一个事务 block 中,正好解决了发件箱模式应该解决的问题:如果在事务代码中引发任何异常,则既不会提交数据库操作,也不会在消费者端读取消息(配置为 read_committed)
这样我就不需要额外的表格或任何类型的 CDC 代码。总之,Spring Kafka 的事务同步方式对我来说似乎比任何事务发件箱模式的实现都更容易使用和实现。
我错过了什么吗?
public ChainedKafkaTransactionManager chainedTransactionManager(
JpaTransactionManager transactionManager,
KafkaTransactionManager kafkaTransactionManager) {
ChainedKafkaTransactionManager chainedKafkaTransactionManager =
new ChainedKafkaTransactionManager<>(transactionManager,
kafkaTransactionManager);
return chainedKafkaTransactionManager;
}
@Bean
@Primary
public JpaTransactionManager transactionManager(EntityManagerFactory
entityManagerFactory) {
JpaTransactionManager jpaTransactionManager =
new JpaTransactionManager(entityManagerFactory);
return jpaTransactionManager;
}
@Bean
public KafkaTransactionManager<Object, Object>
kafkaTransactionManager(ProducerFactory producerFactory) {
KafkaTransactionManager kafkaTransactionManager =
new KafkaTransactionManager<>(producerFactory);
return kafkaTransactionManager;
}
@Transactional(value = "chainedTransactionManager")
public Customer createCustomer(Customer customer) {
customer = customerRepository.save(customer);
kafkaTemplate.send("customer-created-topic","Customer created");
return customer;
}
最佳答案
我认为它不会为您提供相同级别的安全性。如果 Kafka 提交和 DB 提交之间出现问题怎么办。
https://medium.com/dev-genius/transactional-integration-kafka-with-database-7eb5fc270bdc
关于spring-boot - 事务发件箱模式与微服务中的 ChainedKafkaTransactionManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65540273/
我是一名优秀的程序员,十分优秀!