我无法使spring-Cloud-stream-binder-kafka适用于以下用例:
启动@事务(Rest控制器)DB更新/插入发送Kafka消息
在事务提交之前,使用者(使用@EnableBinding和@StreamListener配置)能够读取记录。此使用者已配置了read\u提交的隔离级别。
我不确定这是一个问题还是我这边的任何配置。
尝试配置bean ChainedTransactionManager,但遇到了其他一些问题。
以下对我有用
@Bean(name = "chainedTransactionManager")
@Primary
public PlatformTransactionManager chainedTransactionManager(JpaTransactionManager jpaTM,
BinderFactory binders) {
Binder<MessageChannel,?,?> binder = binders.getBinder("kafka", MessageChannel.class);
if (binder instanceof KafkaMessageChannelBinder) {
ProducerFactory<byte[], byte[]> pf =
((KafkaMessageChannelBinder) binder).getTransactionalProducerFactory();
KafkaTransactionManager<byte[], byte[]> ktm = new KafkaTransactionManager<>(pf);
ktm.setTransactionSynchronization(
AbstractPlatformTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION);
return new ChainedKafkaTransactionManager<Object, Object>(jpaTM, ktm);
} else {
return jpaTM;
}
}
有关详细信息,请访问https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/729
问题内容: 我需要从存储过程中写入日志表。现在,此日志信息必须能够在回滚过程中幸免。 我知道以前曾问过这个问题,但是我的情况有所不同,在这些问题中找不到我的问题的答案。 当存储过程中没有错误时,事情就很简单了,日志表中的条目就在那里。 当有错误时,事情就变得复杂了。 在该过程中,我可以在catch中进行回滚,然后将数据插入日志表,我知道并且我已经在这样做了。 但是问题是当存储过程这样调用时: 我知
我们有一个微服务架构,使用Kafka作为服务之间的通信机制。一些服务有自己的数据库。假设用户调用服务A,这将导致在该服务的数据库中创建一条记录(或一组记录)。此外,这个事件应该作为Kafka主题的一个项目报告给其他服务。确保数据库记录仅在Kafka主题成功更新(本质上是围绕数据库更新和Kafka更新创建分布式事务)时才写入的最佳方法是什么? 我们正在考虑使用spring kafka(在spring
我有一个获取发票的方法,它创建XML并将该XML发送到JMS队列,然后将发票保存到DB,更新状态为“invoinced”。下面是涉及Spring和Hibernate的伪代码。我的问题是:hibernate save rollsback Jms发送失败。或者,如果JMS发送失败,我如何回滚保存发票状态?这属于分布式事务管理。这里涉及哪些交易案例。谢谢
一、Attach数据库: ATTACH DATABASE语句添加另外一个数据库文件到当前的连接中,如果文件名为":memory:",我们可以将其视为内存数据库,内存数据库无法持久化到磁盘文件上。如果操作Attached数据库中的表,则需要在表名前加数据库名,如dbname.table_name。最后需要说明的是,如果一个事务包含多个Attached数据库操作,那么该事务仍然是原子的。见如下示例:
上下文是带有Hibernate和Spring的Java-JPA。 让我们以两阶段提交协议的场景为例(但只有一个资源): > 要从应用程序提交的 查询 3.2如果没有 3.2.1回滚到数据库 我想要的是一种在代码中从3.1.1进行回调的方法,但只有当知道事务将被提交,但在实际提交之前。另外,如果在这里抛出异常,则应该回滚事务。 null
9.1 数据库事务概述 事务首先是一系列操作组成的工作单元,该工作单元内的操作是不可分割的,即要么所有操作都做,要么所有操作都不做,这就是事务。 事务必需满足ACID(原子性、一致性、隔离性和持久性)特性,缺一不可: 原子性(Atomicity):即事务是不可分割的最小工作单元,事务内的操作要么全做,要么全不做; 一致性(Consistency):在事务执行前数据库的数据处于正确的状态,而事务执行