安装rabbitMq (docker 安装方式)
docker search rabbitmq ---搜索rabbitmq的镜像 docker pull rabbitmq:3.7.7-management ---拉取镜像 docker run -d --name rabbitmq3.7.7 -p 5672:5672 -p 15672:15672 2888deb59dfc --启动容器
完成安装后可访问ip:15672 进入web管理端 初始账号 guest 密码guest (也可在启动命令上参数指定 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin)
新建项目中使用的用户以及虚拟主机
点击admin用户 添加虚拟主机 /
编写程序测试
新建spring boot 工程 添加 rabbitmq依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</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-test</artifactId> <scope>test</scope> </dependency> </dependencies>
添加mq配置类
@Configuration public class RabbitMQConfig { /** * 创建交换机 * @return */ @Bean public FanoutExchange fanoutExchange(){ return new FanoutExchange("my_exchange"); } /** * 创建交换队列 * @return */ @Bean public Queue autoDeleteQueue() { return new Queue("my_queue", true, false, true, null); } /** * 进行交换机和队列绑定 * @param fanoutExchange 交换机 * @param autoDeleteQueue 队列 * @return */ @Bean public Binding binding(FanoutExchange fanoutExchange, Queue autoDeleteQueue) { return BindingBuilder.bind(autoDeleteQueue).to(fanoutExchange); } }
客户端监听类
扫描二维码关注公众号,回复:
6873010 查看本文章
@Component public class ConsumerListener { @RabbitListener(queues = "my_queue") public void reciveMessage(Message message){ String msg=new String(message.getBody()); System.out.println(msg); } }
启动项目后查看web端
已经完成交换机创建和绑定 使用管理端发送消息 查看客户端监听结果
结果
程序中发送消息
@RestController public class ProviderController { @Autowired private RabbitTemplate rabbitTemplate; @GetMapping("sendMessage") public String sendMessage(){ rabbitTemplate.convertAndSend("my_exchange","","我是消息提供者 发送了一条消息"); return "success"; } }
浏览器访问触发
客户端收到消息