package cn.cslg.pas.common.config; import org.springframework.amqp.core.*; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.CorrelationData; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; @Component public class RabbitMQConfig { // private static final Logger LOGGER= LoggerFactory.getLogger(RabbitMQConfig.class); @Value("${queueName}") private String queueName; @Autowired private CachingConnectionFactory cachingConnectionFactory; // @Autowired // private IMailLogService mailLogService; @Bean public RabbitTemplate rabbitTemplate() { RabbitTemplate rabbitTemplate = new RabbitTemplate(cachingConnectionFactory); rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() { /** * 消息确认回调 * @param data 消息唯一标识 * @param ack 确认结果 * @param cause 失败原因 */ @Override public void confirm(CorrelationData data, boolean ack, String cause) { String msgId = data.getId(); if (ack) { // LOGGER.info("{}======>消息发送成功",msgId); // mailLogService.update(new UpdateWrapper() // .set("status",MailConstants.SUCCESS) // .eq("msgId",msgId)); } else { // LOGGER.error("{}======>消息发送失败",msgId); } } }); rabbitTemplate.setReturnsCallback(new RabbitTemplate.ReturnsCallback() { @Override public void returnedMessage(ReturnedMessage returnedMessage) { // LOGGER.error("{}======>消息发送queue时失败",message.getBody()); } }); return rabbitTemplate; } @Bean public Queue queue() { return new Queue(queueName); } @Bean public DirectExchange directExchange() { return new DirectExchange(MailConstants.MAIL_EXCHANGE_NAME); } @Bean public Binding binding() { return BindingBuilder.bind(queue()).to(directExchange()).with(MailConstants.MAIL_ROUTING_KEY_NAME); } }