package com.gk.hotwork.specialWork.service.impl; import com.gk.hotwork.specialWork.service.ApprovalWorkRocketMQService; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.client.producer.SendStatus; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.support.TransactionSynchronizationAdapter; /** * 发送作业审批消息 */ @Service public class ApprovalWorkRocketMQServiceImpl implements ApprovalWorkRocketMQService { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Value("${rocketmq.topic.approvalSpecialWorkTopic}") private String approvalSpecialWorkTopic; @Autowired private RocketMQTemplate rocketMQTemplate; /** * 事务提交后发送MQ * @param message * @param */ public void syncSend(T message) { // 是否开启事务判断 if (org.springframework.transaction.support.TransactionSynchronizationManager.isSynchronizationActive()) { org.springframework.transaction.support.TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override public void afterCommit() { SendResult sendResult = rocketMQTemplate.syncSend(approvalSpecialWorkTopic, message); if(sendResult.getSendStatus() != SendStatus.SEND_OK){ logger.error("【特殊作业】审批作业发送rocketMQ消息失败!"+message); }else { logger.info("【特殊作业】审批作业发送rocketMQ消息成功!"+message); } } }); } else { SendResult sendResult = rocketMQTemplate.syncSend(approvalSpecialWorkTopic, message); if(sendResult.getSendStatus() != SendStatus.SEND_OK){ logger.error("【特殊作业】审批作业发送rocketMQ消息失败!"+message); }else { logger.info("【特殊作业】审批作业发送rocketMQ消息成功!"+message); } } } }