系统上线后,偶尔出现一些小的问题,逻辑处理是先保存数据,保存成功后,给别的服务发MQ消息,正常情况下,只要没有网络问题或者超时等问题,数据都能保存成功,紧接着就是发送消息,但是偶尔会出现数据保存失败,事务回滚,但是消息却发出去了!!
所以鉴于代码不完善,需要对发消息做逻辑处理
import com.lenovo.chinaservice.pscm.quality.test.utils.base.AbstractAfterCommitTransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
//保存信息
testReturnRepository.saveTestReturnPnBaseList(testReturnPnBaseAddVOList);
TransactionSynchronizationManager.registerSynchronization(new AbstractAfterCommitTransactionSynchronization() {
@Override
public void afterCommit() {
//推送信息
List<TestRecordSendMqInfo> testRecordSendMqInfoList = jointPnTestRecordMqInfo(testReturnPnBaseAddVOList);
for(TestRecordSendMqInfo testRecordSendMqInfo:testRecordSendMqInfoList){
log.info("**********mq***:" + testRecordSendMqInfo.toString());
t