Windows安装RabbitMQ

先安装Erlang

下载地址:

​http://erlang.org/download/otp_win64_20.3.exe​

 

RabbitMQ Server 3.7.4下载地址

​https://bintray.com/rabbitmq/all/download_file?file_path=rabbitmq-server%2F3.7.4%2Frabbitmq-server-3.7.4.exe​

安装好后,启动服务

SpringBoot学习 集成RabbitMQ(九)_erlang

开启web插件

进入rabbitmq安装目录的sbin目录,在命令行界面开启web插件

 

rabbitmq-plugins enable rabbitmq_management

SpringBoot学习 集成RabbitMQ(九)_spring_02

重新启动reabbitmq服务,在地址栏输入​​http://localhost:15672/​​

使用默认用户 guest/guest登陆界面

新增用户,并设置权限

SpringBoot学习 集成RabbitMQ(九)_erlang_03

 

用新创建的caojiulu用户登陆,发现新用户已经新增成功

设置权限

SpringBoot学习 集成RabbitMQ(九)_erlang_04

点击这用户,设置虚拟主机的权限(全部可读,可写,可配置)

SpringBoot学习 集成RabbitMQ(九)_下载地址_05

SpringBoot中使用RabbitMq

修改pom文件,增加rabbitmq依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

修改配置properties文件,增加rabbitmq的连接信息

## rabbitmq config
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=caojiulu
spring.rabbitmq.password=123456

创建Rabbit配置类,用来配置队列,交换器,路由等高级信息

import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitConfig {

@Bean
public Queue firstQueue(){
//创建一个队列,名称为:caojiulu
return new Queue("caojiulu");
}
}

创建消息的生产者

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
public class Sender {
@Resource
private AmqpTemplate rabbitTemplate;
public void send() {
rabbitTemplate.convertAndSend("caojiulu", "this a messages !!!");
}
}

创建消息的消费者

@Component
//定义该类需要监听的队列
@RabbitListener(queues = "caojiulu")
public class Receiver {
@RabbitHandler //指定对消息的处理
public void process(String msg) {
System.out.println("receive msg : " + msg);
}
}

测试类:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)
public class RabbitmqTest {
@Resource
private Sender sender;
@Test
public void testRabbitmq() throws Exception {
sender.send();
}
}