Maven依赖:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> <exclusions> <exclusion> <artifactId>slf4j-api</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency>package com.knd.common.utils.rabbitmq; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.knd.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.MessageBuilder; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * @Description: rabbitMQ工具类 */ @Component @Slf4j public class RabbitMQUtil { private static RabbitTemplate rabbitTemplate; private static ObjectMapper objectMapper = new ObjectMapper(); @Autowired public void setRabbitTemplate(RabbitTemplate rabbitTemplate) { RabbitMQUtil.rabbitTemplate = rabbitTemplate; } public static void send(Object obj, String exchange, String queue, String routingKey) { if (obj == null) { log.error("消息体不能为空!"); throw new RuntimeException("消息体不能为空"); } try { send(objectMapper.writeValueAsBytes(obj), exchange, queue, routingKey); } catch (JsonProcessingException e) { log.error("对象序列化失败,异常信息:{}", e.getMessage()); e.printStackTrace(); throw new RuntimeException(e); } } public static void send(String msg, String exchange, String queue, String routingKey) { try { send(msg.getBytes("UTF-8"), exchange, queue, routingKey); log.info("【rabbitMQ发送消息成功】 exchange:{},queue:{},routingKey:{}\n消息内容:{}", exchange, queue, routingKey, msg); } catch (Exception e) { log.error("【rabbitMQ发送消息失败】 exchange:{},queue:{},routingKey:{}\n消息内容:{} \n异常信息:{}", exchange, queue, routingKey, msg, e.getMessage()); e.printStackTrace(); throw new RuntimeException(e); } } public static void send(byte[] msg, String exchange, String queue, String routingKey) { rabbitTemplate.setExchange(exchange); rabbitTemplate.setQueue(queue); if (StringUtils.isNotBlank(routingKey)) { rabbitTemplate.setRoutingKey(routingKey); } try { rabbitTemplate.convertAndSend(MessageBuilder.withBody(msg).build()); log.info("【rabbitMQ发送消息成功】 exchange:{},queue:{},routingKey:{},消息字节数组长度:{}", exchange, queue, routingKey, msg.length); } catch (Exception e) { log.error("【rabbitMQ发送消息失败】 exchange:{},queue:{},routingKey:{},消息字节数组长度:{} \n异常信息:{}", exchange, queue, routingKey, msg.length, e.getMessage()); e.printStackTrace(); } } }
application.yml :
#mq配置 rabbitmq: host: //mq地址 port: 5672 username: //名字 password: //密码 listener: simple: acknowledge-mode: manual #设置为手动签收模式
