最近再看项目代码,发现很多的service里面,喜欢在事务内部再去调用HTTP请求,简单分析下此种方式的利弊与解决策略。
在数据库内部嵌套TCP连接(一般是HTTP调用或是RPC远程调用)。
@Transactional(rollbackFor = Exception.class)
public Boolean inviteUser(..){
// service 调用
userService.add(..);
// HTTP调用
httpClient.post(..,20)
}优点:
弊端:
评估审视多个操作调用之间是否有强一致性。
afterCommit方法,再进行HTTP调用。事务传播级别,尽量使用当前事务。