前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 整合 RabbitMQ

SpringBoot 整合 RabbitMQ

作者头像
好好学java
发布2018-09-21 15:41:59
6310
发布2018-09-21 15:41:59
举报

概述

RabbitMQ 是由 Erlang 语言编写的实现了高级消息队列协议(AMQP)的开源消息代理软件(也可称为面向消息的中间件)。其支持 Windows、Linux/Unix、MAC OS 等操作系统和包括 Java 在内的多种编程语言。

AMQP,即 Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计;基于此协议的客户端与消息中间件可传递消息,并不受客户端、中间件不同产品,不同的开发语言等条件的限制。

RabbitMQ 的重要概念有以下几个:

Broker:接收消息,分发消息应用; Exchange:消息交换机;指定消息按照什么规则路由到哪个队列 Queue; Queue:消息队列,存储消息的载体; Binding:Exchange 和 Queue 之间的虚拟连接;Binding 中可以包含 RoutingKey,其信息被保存到 Exchange 中的查询表中,作为 Message 的分发依据; RoutingKey:路由关键字,Exchange 根据 RoutingKey 将消息投递到对应的队列中; Vhost:虚拟主机,一个 Broker 可以有多个虚拟主机,用作不同用户的权限分离;一个虚拟主机持有一组 Exchange、Queue 和 Binding; Producer:消息生产者,主要将消息投递到对应的 Exchange 上面; Consumer:消息消费者,消息的接收者,一般是独立的程序; Channel:消息通道,也称信道。在客户端的每个连接里可以建立多个 Channel,每个 Channel 代表一个会话任务。

CentOS 7 安装 RabbitMQ

1.添加 Erlang 源:

代码语言:javascript
复制
vim /etc/yum.repos.d/rabbitmq-erlang.repo 

文件中添加如下内容保存:

代码语言:javascript
复制
[rabbitmq-erlang] 
name=rabbitmq-erlang 
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7 
gpgcheck=1 
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc repo_gpgcheck=0 enabled=1 

2. 新建目录:

代码语言:javascript
复制
mkdir /usr/local/software; 

3. 下载 RabbitMQ rpm 安装文件:

代码语言:javascript
复制
wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.7/rabbitmq-server-3.7.7-1.el7.noarch.rpm; 

4. 安装 RabbitMQ Server:

代码语言:javascript
复制
yum install -y rabbitmq-server-3.7.4-1.el7.noarch.rpm; 

5. 安装 RabbitMQ Web 管理界面并启动 RabbitMQ Server:

代码语言:javascript
复制
rabbitmq-plugins enable rabbitmq_management systemctl start rabbitmq-server; 

6. 由于 RabbitMQ 默认用户 Guest 只能访问安装在 RabbitMQ 本机上的 Web 管理页面,因此当 RabbitMQ 安装在 Linux 服务器上时,需要做如下操作才能在别的机器上访问其 Web管理页面:

添加用户:

代码语言:javascript
复制
rabbitmqctl add_user root 123456 

其中 root 表示新添加用户名,123456 表示登录密码;

赋予用户权限:

赋予用户角色:

代码语言:javascript
复制
rabbitmqctl set_permissions -p "/" root '.' '.' '.*'; 

rabbitmqctl setusertags root administrator;

查看 RabbitMQ 用户:

代码语言:javascript
复制
rabbitmqctl list_users。 

访问:http://192.168.1.201:15672,得到 RabbitMQ Web 管理页面:

此时,RabbitMQ 已经安装成功。

整合RabbitMQ

1.在 pom 文件中添加依赖:

代码语言:javascript
复制
org.springframework.boot 

spring-boot-starter-amqp 

2. 在 application.yml 配置文件中添加如下配置:

代码语言:javascript
复制
spring: 
      rabbitmq: 
             host: 192.168.1.120
             port: 5672 
             username: root 
             password: hcb13579 

3. 在 RabbitMQ 中新建一个名为“myQueue”的队列:

代码语言:javascript
复制
@Configuration 
public class RabbitmqConfig { 
   @Bean 
   public Queue queue(){ 
     return new Queue("myQueue"); 
   } 
} 

4. 利用 AmqpTemplate 向队列中发送消息:

代码语言:javascript
复制
@RestController 
@RequestMapping("/rabbitmq") 
public class RabbitmqController { 
@Autowired private AmqpTemplate amqpTemplate;
@RequestMapping("/sendMessage")
public String sendMessageToMq(String msg) {
        amqpTemplate.convertAndSend(CommonConstants.RABBITMQ_QUEUE_NAME, msg);

    return "send message successfully";
}
} 

5. 消费消息:

代码语言:javascript
复制
@Component 
@RabbitListener(queues = {CommonConstants.RABBITMQQUEUENAME}) 
public class RabbitmqConsumer {
@RabbitHandler
public void consumeMessage(String msg){
    System.out.println("接受到的消息:"+ msg);
}
} 

6. 启动程序,利用 Postman 测试:

如果你想成为一名优秀的java架构师,想学习Java高阶技术基础、框架技术的源码级分析、linux、SpringBoot、SpringCloud、阿里微服务框架Dubbo、Docker构建微服务或者在工作中遇到瓶颈,想跳槽加薪,面试不过, 碰到难题等等一系列问题,可以加我的架构师群:862039307,这里有最专业的人为你排忧解难,有最新的学习资源免费为你共享。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 好好学java 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • CentOS 7 安装 RabbitMQ
  • 整合RabbitMQ
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档