安装:
首先服务器安装rabbitmq,自行百度
https://www.cnblogs.com/liaojie970/p/6138278.html
添加rabbitmq的用户默认不能远程访问,需要配置
https://blog.csdn.net/andrewniu/article/details/80255829
安装控制台插件
默认端口5726 控制台默认端口15672
rabbitmq-plugins.bat enable rabbitmq_management
/sbin/rabbitmq-server -detached
/sbin/rabbitmqctl status
常用命令:
http://www.imooc.com/article/274464
交换器讲解:
https://www.cnblogs.com/vipstone/p/9295625.html
配置:
spring.rabbitmq.host=localhost
# rabbitmq的端口
spring.rabbitmq.port=5672
# rabbitmq的用户名
spring.rabbitmq.username=admin
# rabbitmq的用户密码
spring.rabbitmq.password=admin
#最大重试次数
spring.rabbitmq.listener.simple.retry.max-attempts=5
# 是否开启消费者重试(为false时关闭消费者重试,这时消费端代码异常会一直重复收到消息)spring.rabbitmq.listener.simple.retry.enabled=true
#重试间隔时间(单位毫秒)
spring.rabbitmq.listener.simple.retry.initial-interval=2000
#重试次数超过上面的设置之后是否丢弃(false不丢弃时需要写相应代码将该消息加入死信队列)spring.rabbitmq.listener.simple.default-requeue-rejected=false
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
消息发送方:
@Autowired private AmqpTemplate rabbitAmqpTemplate; public void send(MessageEntity msg, String routingkey){ /** * convertAndSend - 转换并发送消息的template方法。 * 是将传入的普通java对象,转换为rabbitmq中需要的message类型对象,并发送消息到rabbitmq中。 * 参数一:交换器名称。 类型是String * 参数二:路由键。 类型是String * 参数三:消息,是要发送的消息内容对象。类型是Object */ this.rabbitAmqpTemplate.convertAndSend(this.exchange, routingkey, msg); }
消息消费方:
@Component @RabbitListener( bindings=@QueueBinding( value=@Queue(value="log.error", autoDelete="false"), exchange=@Exchange(value="PANYUZAI_SERVICE_A", type= ExchangeTypes.TOPIC), key="PANYUZAI_SEND_MESSAGE_TRUE" ) ) public class ConsumerMessageTrue { private Logger logger = LoggerFactory.getLogger(ConsumerMessageTrue.class); @RabbitHandler public void process(MessageEntity msg){ logger.warn("ConsumerMessageTrue param:"+ JSON.toJSONString(msg)); } }
死信队列: