【发布时间】:2020-02-16 23:46:06
【问题描述】:
我需要在一个事务中执行多个操作
- 产生卡夫卡消息
- 更新表 A
- 更新表 B
我可以发送消息并且不更新两个表(A 和 B)。我不能生成消息并更新其中一个表。
我正在尝试使用@Transactional 注释来实现我的目标
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.SERIALIZABLE)
public void handle(Event approvalEvent) {
var entity = entityService.getLatestVersion(approvalEvent.getTransactionId());
entityService.approve(entity.getTransactionId());
logService.logApproval(entity);
producer.send(approvalEvent);
}
我做得对吗?
【问题讨论】:
标签: spring-boot apache-kafka spring-data-jpa spring-transactions