嘻哈飞车族腻害,高人都是这样玩SpringBoot整合RabbitMQ


RabbitMQ 简介以 AMQP 协议:
(1)RabbitMQ 是开源的消息代理和队列服务器 , 用来通过普通协议在完全不同的应用之间共享数据 , RabbitMQ 底层是用了 Erlang 语言来编写的 , 并且 RabbitMQ 是基于 AMQP 协议的.(2)RabbitMQ 不仅仅可以使用 java 客户端进行编写 , 且可以使用其他的语言(python , php等…),它提供了丰富的API
RabbitMQ 的优点:
(1)开源 , 性能优秀 , 稳定性保障(2)与 SpringAMQP 完美的整合 , API 丰富 (Spring基于 RabbitMQ 提供了一套框架 , 叫做AMQP 框架)这套框架不仅提供了原生的 RabbitMQ , 而且还提供了丰富可扩张的API帮助开发人员更好的去应用(3)集群模式丰富 , 表达式配置 , HA模式 , 镜像队列模型说明:(保证数据不丢失的提前做到高可靠性 , 可用性)普遍使用的镜像队列模式(4)AMQP 全称:Advanced Message Queuing Protocl AMQP 翻译过来:高级消息队列协议
这里为了方便在 docker 上安装 RabbitMQ(1)首先搜索 RabbitMQ 的安装命令:
docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3-management1
嘻哈飞车族腻害,高人都是这样玩SpringBoot整合RabbitMQ
本文插图
安装成功:
嘻哈飞车族腻害,高人都是这样玩SpringBoot整合RabbitMQ
本文插图
【嘻哈飞车族腻害,高人都是这样玩SpringBoot整合RabbitMQ】
对于映射的端口需要注意两个:15672 和 5672 , 其中 15672 是管理的端口 , 5672 是通讯的端口
嘻哈飞车族腻害,高人都是这样玩SpringBoot整合RabbitMQ
本文插图
可以看到docker容器 15672 对应的主机映射端口是 32771 ,
嘻哈飞车族腻害,高人都是这样玩SpringBoot整合RabbitMQ
本文插图
默认的用户名和密码都是 guest
嘻哈飞车族腻害,高人都是这样玩SpringBoot整合RabbitMQ
本文插图
注意这里的端口选择 32781 , 对应rabbitmq 容器的端口是 5672 , 选择通讯端口 , 切忌不用选择管理端口
嘻哈飞车族腻害,高人都是这样玩SpringBoot整合RabbitMQ
本文插图
spring.rabbitmq.host=192.168.245.133spring.rabbitmq.username=guestspring.rabbitmq.password=guestspring.rabbitmq.port=327811234直接交换模式可以参考:
所谓“直接连接交换机”就是:Producer(生产者)投递的消息被DirectExchange (交换机)转发到通过routingkey绑定到具体的某个Queue(队列) , 把消息放入队列,然后Consumer从Queue中订阅消息
这里的具体某个队列是由参数 routingKey 控制的 , 消息是通过这个参数往队列上发的
嘻哈飞车族腻害,高人都是这样玩SpringBoot整合RabbitMQ
本文插图
RabbitMQ消息模型的核心思想(core idea): 生产者会把消息发送给RabbitMQ的交换中心(Exchange) , Exchange的一侧是生产者 , 另一侧则是一个或多个队列 , 由Exchange决定一条消息的生命周期–发送给某些队列 , 或者直接丢弃掉 。
(1)配置 RabbitDirectConfig
@Configurationpublic class RabbitDirectConfig {public final static String DIRECTNAME = "yolo-direct";// 消息队列@BeanQueue queue() {return new Queue("hello.yolo");}@BeanDirectExchange directExchange() {return new DirectExchange(DIRECTNAME, true, false);}// 将 queue 和 directExchange 绑定到一起@BeanBinding binding() {return BindingBuilder.bind(queue()).to(directExchange()).with("direct");}}123456789101112131415161718192021