1.RabbitMQ在Windows上的环境搭建
1.1下载erlang
erlang下载地址,下载后双击.exe安装,安装完毕后配置环境变量;环境变量增加ERLANG_HOME,值为安装路径;环境变量Path中加入 %ERLANG_HOME%\bin;配置完后打开命令行,输入erl,如果出现erlang的版本信息就表示erlang语言环境安装成功。
1.2下载RabbitMQ
RabbitMQ下载地址,下载后同样双击.exe安装,安转完毕后在命令行CMD中,进入RabbitMQ安装目录的sbin(我的目录是:E:\tools\RabbitMQ\rabbitmq_server-3.8.2\sbin),输入:rabbitmq-plugins enable rabbitmq_management命令,稍等会会发现出现plugins安装成功的提示。
浏览器输入localhost:15672进入管理界面,账号密码默认为guest。
2.代码层面实现springboot集成RabbitMQ
2.1pom添加相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2.2RabbitMQ相关配置
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
#自定义的一些配置
blog:
exchange:
fanout: my.exchange.fanout
direct: my.exchange.direct
topic: my.exchange.topic
email:
queue: email
2.3生产者相关demo
@Component
public class Producer {
@Autowired
private RabbitTemplate rabbitTemplate;
//定义交换机名
@Value("${blog.exchange.direct}")
private String exchangeName;
//定义routingKey(fanout模式没有路由key)
@Value("${blog.routingKey}")
private String routingKey;
public void sendMessage() {
try {
String msg = "您的博客信息是:" + UUID.randomUUID().toString() + new Date();
rabbitTemplate.convertAndSend(exchangeName, routingKey, msg);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
RabbitTemplate类会自动读取配置文件连接上MQ不需要额外代码。
2.4消费者相关demo(以direct模式举例)
@Component
/**
* 1.会把申请的队列和交换机进行绑定
* 2.确定消息的模式 fanout direct topic
* 3.确定queue的持久性 autoDelete = "false" ,代表持久化(存盘),若为"true" ,rabbitmq挂了后队列会删除
*/
@RabbitListener(bindings = @QueueBinding(value = @Queue(value = "${blog.email.queue}", autoDelete = "false"),
exchange = @Exchange(value = "${blog.exchange.direct}", type = ExchangeTypes.DIRECT), key = "${blog.routingKey}"))
public class EmailServer {
@RabbitHandler
public void sendMessage(String msg) {
System.out.println("Email消息:" + msg);
}
}
2.5测试
@SpringBootTest
class CommunityCoreApplicationTests {
@Autowired
private Producer producer;
@Test
void contextLoads() {
producer.sendMessage();
}
}




