消息中间件
存储消息,解耦消息发送方和消费方。提高系统性能
1.安装
下载erlang 和 rabbit 安装包
官网地址 下载 rabbitMQ :http://www.rabbitmq.com/download.html,安装rabbitmq需要erlang,下载erlang:http://www.erlang.org/download.html
二、配置RabbitMQ
打开命令行模式cmd:
cd C:\rabbitmq\RabbitMQ Server\rabbitmq_server-3.0.0\sbin
依次输入:
安装插件
1.rabbitmq-plugins.bat enable rabbitmq_management
重启服务
2 net stop RabbitMQ && net start RabbitMQ
打开浏览器登录:http://127.0.0.1:15672
55672好像也可以,直接跳转到下列位置
账号和密码都是guest
三. 用户管理
RabbitMQ 提供有管理工具 rabbitmqctl ,位于 RabbitMQ 安装目录 rabbitmq_server-3.6.6\sbin\ ,windows 为 rabbitmqctl.bat。
用户管理包括增加用户,删除用户,查看用户列表,修改用户密码。
相应的命令
(1) 新增一个用户
rabbitmqctl add_user Username Password
(2) 删除一个用户
rabbitmqctl delete_user Username
(3) 修改用户的密码
rabbitmqctl change_password Username Newpassword
(4) 查看当前用户列表
rabbitmqctl list_users
添加用户完整过程
rabbitmqctl add_vhost vh
rabbitmqctl add_user test test
rabbitmqctl set_user_tags test management
rabbitmqctl set_permissions -p vh test ".*" ".*" ".*"
虚拟主机:用户名称密码 用户标签 权限
简单使用
1、配置 Pom 包,主要是添加 spring-boot-starter-amqp
的支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2、配置文件
配置 RabbitMQ 的安装地址、端口以及账户信息
spring.application.name=Spring-boot-rabbitmq
spring.rabbitmq.host=192.168.0.86
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
3、队列配置
@Configuration
public class RabbitConfig {
@Bean
public Queue Queue() {
return new Queue("hello");
}
}
3、发送者
rabbitTemplate 是 Spring Boot 提供的默认实现
@component
public class HelloSender {
@Autowired
private AmqpTemplate rabbitTemplate;
public void send() {
String context = "hello " + new Date();
System.out.println("Sender : " + context);
this.rabbitTemplate.convertAndSend("hello", context);
}
}
4、接收者
@Component
@RabbitListener(queues = "hello")
public class HelloReceiver {
@RabbitHandler
public void process(String hello) {
System.out.println("Receiver : " + hello);
}
}
5、测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class RabbitMqHelloTest {
@Autowired
private HelloSender helloSender;
@Test
public void hello() throws Exception {
helloSender.send();
}
}
注意,发送者和接收者的 queue name 必须一致,不然不能接收