本文共 2632 字,大约阅读时间需要 8 分钟。
RabbitMQ是一种高效的消息队列系统,广泛应用于异步处理、应用解耦和流量削锋等场景。它通过生产者、消费者和交换机实现消息的高效传递,解决了传统异步通信的性能瓶颈。
消息队列(Message Queue,简称MQ)主要用于不同应用程序之间的异步通信。其核心功能是存储和转发消息,支持高并发、可靠和可扩展的场景。常见用途包括订单系统通知库存系统、秒杀活动流量削锋以及日志处理等。
确保宿主机安装了Docker环境,并可通过命令执行:
docker stop $(docker ps -aq)docker rm $(docker ps -aq)
通过Docker搜索镜像:
docker search rabbitmq:management
下载镜像并运行:
docker pull rabbitmq:managementdocker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
访问地址:http://宿主IP:15672,默认账号密码为guest/guest。
新建一个Maven项目,添加依赖:
org.springframework.boot spring-boot-starter-amqp
package com.cdl.rabbitmqprovider.config;import org.springframework.amqp.core.AmqpTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;@Componentpublic class Sender { @Autowired private AmqpTemplate rabbitTemplate; public void send(String routingKey) { rabbitTemplate.convertAndSend("exchange", routingKey, "消息内容"); }} package com.cdl.rabbitmqconsumer.config;import org.springframework.amqp.rabbit.annotation.RabbitListener;import org.springframework.stereotype.Component;@Componentpublic class Receiver { @RabbitListener(queues = "exchange") public void process(String msg) { System.out.println("接收消息:" + msg); }} package com.cdl.rabbitmqprovider.config;import org.springframework.amqp.core.Binding;import org.springframework.amqp.core.DirectExchange;import org.springframework.amqp.core.Queue;import org.springframework.context.annotation.Bean;@Configurationpublic class RabbitmqDirectConfig { @Bean public DirectExchange directExchange() { return new DirectExchange("exchange_direct"); } @Bean public Queue directQueue() { return new Queue("queue_direct"); } @Bean public Binding directBinding() { return BindingBuilder.bind(directQueue()) .to(directExchange()) .with("routing_key"); }} 通过设置队列的过期时间和死信交换机,实现消息延迟和重试。
生产者发送消息至直连交换机,消息在预定时间过期后转入死信队列。
消费者订阅死信队列,处理超时或失败的消息。
通过以上配置和实践,RabbitMQ可以有效解决异步通信、流量削锋等问题,是一款值得深入探索的高效消息队列系统。
转载地址:http://natfk.baihongyu.com/