package com.gkhy.safePlatform.equipment.common; 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.stereotype.Component; import org.springframework.transaction.support.TransactionSynchronizationAdapter; import org.springframework.transaction.support.TransactionSynchronizationManager; import java.util.Date; @Component public class RocketMQTemplateHelper { @Autowired private RocketMQTemplate rocketMQTemplate; private Logger logger = LoggerFactory.getLogger(this.getClass()); /** * 事务提交后发送MQ * @param message * @param */ public void syncSend(String destination, T message) { // 是否开启事务判断 if (TransactionSynchronizationManager.isSynchronizationActive()) { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override public void afterCommit() { SendResult sendResult = rocketMQTemplate.syncSend(destination, message); if(sendResult.getSendStatus() != SendStatus.SEND_OK){ logger.info("【安全物资和设备管理】事务提交后才发送MQ的消息发送失败!"+ new Date()); }else{ logger.info("【安全物资和设备管理】消息申请发送rocketMQ消息成功!"+ new Date()); } } }); } else { SendResult sendResult = rocketMQTemplate.syncSend(destination, message); if(sendResult.getSendStatus() != SendStatus.SEND_OK){ logger.info("【安全物资和设备管理】事务提交后才发送MQ的消息发送失败!"+ new Date()); }else{ logger.info("【安全物资和设备管理】消息申请发送rocketMQ消息成功!"+ new Date()); } } } }