Fork me on GitHub

JackLin的博客

当前位置:首页 > 标签

SpringBoot 14 Spring 2 SpringMVC 3 MyBatis 2 Linux 4 阿里云 13 宝塔 1 Docker 3 ElasticSearch 2 Redis 4 Shiro 0 Dubbo 0 Swagger 0 Thymeleaf 6 数据库 11 MySQL 11 外键 2 Gradle 1 Test 0 Tomcat 1 JavaWeb 7 Ajax 1 注解 3 css 2 报错 3 多数据源 1 Java基础 1 源码 2 Servlet 1 JSP 1 环境搭建 8 RabbitMQ 1 七牛云 1 Edit.md 1 图像识别 4 英语 2 Zookeeper 1

RabbitMQ的安装(Docker),基本介绍以及整合SpringBoot

  • 2020-05-05
  • 140
  • SpringBoot
## RabbitMQ的安装,通过Docker安装 #####(1)去到 Docker Hub官网,搜索 RabbitMQ 尽量安装带 management 的,我这里安装的是 3.8 版本的 ![](/upload/2020-5-5 134149.png) 执行安装 `docker pull rabbitmq:3.8-management` ![](/upload/2020-4-30 103308.png) #####(2)安装完成之后启动 RabbitMQ 启动 RabbitMQ `docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq fa535c4b51fe` - -d 表示后台启动 - -p 表示端口映射 - 5672 是 RabbitMQ 的默认端口,我们需要使用这个端口连接上 RabbitMQ - 15672 是 RabbitMQ 的UI界面的端口,我们连接之后可以进行可视化操作 - --name 表示为我们的容器起一个名字 - 后面的一串字符是我们的镜像 ID,这里要换成自己的镜像ID,通过 `docker iamges` 命令可以查看 emm~~~ 忘记截图了 #####(3)连接图形化界面 输入地址加15672端口号,进入图形界面 - 记得开放阿里云安全组 - 开放15672端口和5672端口 ---》 `firewall-cmd --add-port=6379/tcp` ## RabbitMQ 的基本介绍 #### 1. 消息服务 (1)JMS(Java Message Service) Java消息服务 - 基于JVM消息代理的规范,ActiveMQ,HornetMQ是JMS的实现 (2)AMQP(Advanced Message Queuing Protocol) - 高级消息队列协议,也是一个消息代理的规范,兼容JMS - RabbitMQ是AMQP的实现 #### 2. RabbitMQ 简介 **RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue Protocol)的开源实现。** ##### 核心概念 (1)Message 消息,有消息头和消息体组成 (2)Publisher 消息的生产者,也是一个向交换器发布消息的客户端应用程序。 (3)Exchange 交换器,用来接收生产者发送的消息并将这些消息路由给服务器中的队列。 (4)Queue 消息队列,用来保存消息直到发送给消费者。一个消息可投入一个或多个队列。消息一直在队列里面,等待消费者连接到这个队列将其取走。 (5)Binding 绑定,用于消息队列和交换器之间的关联。一个绑定就是基于路由键将交换器和消息队列连接起来的路由规则,所以可以将交换器理解成一个由绑定构成的路由表。 (6)Connection 网络连接,比如一个TCP连接。 (7)Channel 信道,多路复用连接中的一条独立的双向数据流通道。 (8)Consumer 消息的消费者,表示一个从消息队列中取得消息的客户端应用程序。 (9)Virtual Host 虚拟主机,表示一批交换器、消息队列和相关对象。 (10)Broker 表示消息队列服务器实体 **关于这些概念的基本示意图: ** ![](/upload/消息队列图示.png) ## SpringBoot整合RabbitMQ #### 1. 创建工程,导入对应的依赖 如果是新的工程,在初始化时选择 Spring for RabbitMQ ![](/upload/2020-5-5 141337.png) 如果是旧的工程,这添加依赖 可以在 SpringBoot 的官方文档中查找 ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> ``` #### 2. 分析自动配置类,进行相关的配置 (1)找到 RabbitAutoConfiguration 类,分析一下 > rabbitConnectionFactory 方法,通过 RabbitProperties 里面的配置,来创建一个 RabbitMQ 的连接工厂。 所以我们可以在 application.yaml 中进行如下配置 ``` spring: rabbitmq: host: 39.98.86.223 username: guest password: guest ``` > 在 RabbitAutoConfiguration 还配置了一个 RabbitTemplate 放入容器中,我们可以通过 RabbitTemplate 来给 RabbitMQ 发送和接收消息。和之前使用的 RedisTemplate,JDBCTemplate 类似 > 还往容器中放置了一个 AmqpAdmin,用来创建和删除 Queue,Exchange,Binding