package com.gkhy.safePlatform.specialWork.service.impl; import com.gkhy.safePlatform.specialWork.service.WorkApplyRocketMQService; 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; import java.util.Date; /** * 发送作业申请消息 */ @Service("WorkApplyRocketMQService") public class WorkApplyRocketMQServiceImpl implements WorkApplyRocketMQService { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Value("${rocketmq.topic.applySpecialWorkTopic}") private String applySpecialWorkTopic; @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(applySpecialWorkTopic, message); if(sendResult.getSendStatus() != SendStatus.SEND_OK){ logger.error("【特殊作业】作业申请发送rocketMQ消息失败!"+ new Date()); }else { logger.info("【特殊作业】作业申请发送rocketMQ消息成功!"+ new Date()); } } }); } else { SendResult sendResult = rocketMQTemplate.syncSend(applySpecialWorkTopic, message); if(sendResult.getSendStatus() != SendStatus.SEND_OK){ logger.error("【特殊作业】作业申请发送rocketMQ消息失败!"+ new Date()); }else { logger.info("【特殊作业】作业申请发送rocketMQ消息成功!"+ new Date()); } } } }