Spring Cloud Bus RabbitMQ
RabbitMQ安装配置
RabbitMQ是用Erlang语言编写的,因此安装RabbitMQ之前我们要先安装Erlang环境,首先去 http://www.erlang.org/downloads 地址下载erlang,下载到的是一个exe文件,直接双击安装即可,然后去 http://www.rabbitmq.com/download.html 地址下载RabbitMQ,下载成功之后,也是一个exe,双击安装即可。RabbitMQ安装成功之后,默认会创建系统服务,将和Windows系统一起启动。所以安装成功之后,打开系统服务,我们如果看到如下结果表示安装成功了:
安装成功之后,我们可以使用web来管理我们的RabbitMQ,管理之前需要我们先开启web管理功能,开启方式:进入到安装目录的sbin目录下,然后执行 .\rabbitmq-plugins enable rabbitmq_management命令,如下:
执行成功之后,打开浏览器,输入:http://localhost:15672 进入到web管理页面,需要先登录,默认用户名密码都是guest,web管理页面如下:
登录成功之后,我们可以先尝试创建一个用户,创建用户页面如下:
输入用户名密码就可以创建了,tags表示用户标签,相当于角色,可选值有management、none、policymaker、monitoring和administrator,不同取值所对应的权限区别如下:
none
1.不能访问 management plugin
management
用户可以通过AMQP做的任何事外加:
1.列出自己可以通过AMQP登入的virtual hosts
2.查看自己的virtual hosts中的queues, exchanges 和 bindings
3.查看和关闭自己的channels 和 connections
4.查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动
policymaker
management可以做的任何事外加:
1.查看、创建和删除自己的virtual hosts所属的policies和parameters
monitoring
management可以做的任何事外加:
1.列出所有virtual hosts,包括他们不能登录的virtual hosts
2.查看其他用户的connections和channels
3.查看节点级别的数据如clustering和memory使用情况
4.查看真正的关于所有virtual hosts的全局的统计信息
administrator
policymaker和monitoring可以做的任何事外加:
1.创建和删除virtual hosts
2.查看、创建和删除users
3.查看创建和删除permissions
4.关闭其他用户的connections
OK,我这里就自己创建一个sang用户一会使用(当然不创建也可以,不创建就直接使用默认的guest用户),sang用户创建好之后,点击用户名,给用户设置virtual hosts,否则一会使用这个用户的时候会报错。设置方式如下:
OK,配置完成后,接下来我们来看一个Spring Boot和RabbitMQ整合的案例,来对RabbitMQ做进一步的了解。
简单案例
整合案例是非常简单的。
工程创建
首先我们来创建一个普通的Spring Boot工程,然后添加如下依赖:
1 | <dependency> |
属性配置
接下来在application.properties中配置RabbitMQ的连接信息,如下:
1 | spring.application.name=rabbitmq-hello |
这里我们分别配置了RabbitMQ的地址为localhost,端口为5672(注意这里没写错,web管理端端口是15672),用户名和密码则是我们刚刚创建出来的(也可以使用默认的guest)。
创建消息生产者
发送消息我们有一个现成的封装好的对象AmqpTemplate,通过AmqpTemplate我们可以直接向某一个消息队列发送消息,消息生产者的定义方式如下:
1 | @Component |
注入AmqpTemplate,然后利用AmqpTemplate向一个名为hello的消息队列中发送消息。
创建消息消费者
1 | @Component |
@RabbitListener(queues = “hello”)注解表示该消息消费者监听hello这个消息队列,@RabbitHandler注解则表示process方法是用来处理接收到的消息的,我们这里收到消息后直接打印即可。
配置消息队列Bean
1 | @Configuration |
创建一个名为hello的消息队列。
测试
创建单元测试类,用来发送消息,如下:
1 | @RunWith(SpringJUnit4ClassRunner.class) |
上面所有的工作做完后,我们就可以启动我们的Spring Boot工程了,启动成功后,我们可以在启动日志中看到如下内容:
这个表示程序已经创建了一个访问RabbitMQ的连接,此时在RabbitMQ的web管理面板中,我们也可以看到连接信息,如下:
此时运行执行单元测试发送发送一条消息,我们可以在单元测试执行的控制台看到如下日志,表示消息已经发送出去了:
然后在程序运行的控制台也可以看到如下日志,表示消息已经接收到了: