1.springboot整合rabbitmq
pom中加入依赖
<!--rabbitmq-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
application.properties
########################################################################
# rabbitmq
########################################################################
spring.rabbitmq.host=192.168.48.142
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
# 虚拟多个rabbitmq默认写法,即使guest也可以访问该目录
spring.rabbitmq.virtual-host=/
#消费者最大连接数量
spring.rabbitmq.listener.simple.concurrency= 10
spring.rabbitmq.listener.simple.max-concurrency= 10
#每次连接取一个线程读写
spring.rabbitmq.listener.simple.prefetch= 1
#消费者启动
spring.rabbitmq.listener.simple.auto-startup=true
#消费者消费数据失败重试
spring.rabbitmq.listener.simple.default-requeue-rejected= true
#重试的配置
spring.rabbitmq.template.retry.enabled=true
spring.rabbitmq.template.retry.max-attempts=3
spring.rabbitmq.template.retry.multiplier=1.0
新建红框标注的文件即可:
2. 直连模式
controller中加入内容
/**
* 测试:消息队列整合是否成功:direct模式
* @return
*/
@RequestMapping("/testmq")
@ResponseBody
public Result<String> testmq(){
mqSender.send("test for rabbitmq..");
return Result.success("success mq");
}
直连模式的mq配置
发送者
监听者
测试:http://localhost:8080/demo/testmq
打印日志
3.交换机模式
交换机配置
/**
* 交换机模式:路由配置
*
*/
@Bean
public Queue topicQueue1() {
return new Queue(MQConfig.TOPIC_QUEUE1, true);
}
@Bean
public Queue topicQueue2() {
return new Queue(MQConfig.TOPIC_QUEUE2, true);
}
@Bean
public TopicExchange topicExchange(){
return new TopicExchange(MQConfig.TOPIC_EXCHANGE);
}
// 表示路由key是topic.key1的消息,进入交换机绑定到topicQueue1()消息队列上
@Bean
public Binding topicBinding1() {
return BindingBuilder.bind(topicQueue1()).to(topicExchange()).with("topic.key1");
}
// 表示路由key是topic.#的消息,进入交换机绑定到topicQueue2()消息队列上(#是占位符,表示0个以上的数据)
@Bean
public Binding topicBinding2() {
return BindingBuilder.bind(topicQueue2()).to(topicExchange()).with("topic.#");
}
receive:针对两个消息队列进行监听
sender:发送topic.key1会按照匹配规则被路由器放到MQConfig.TOPIC_QUEUE2和MQConfig.TOPIC_QUEUE1上。发送topic.key2会被按照匹配规则放到MQConfig.TOPIC_QUEUE2上。
controller
测试:http://localhost:8080/demo/testmq2
控制台日志
4.fanout类型的交换机
配置
sender:向该广播类型的路由器发送数据
receive:此时沿用前面的两个主题MQConfig.TOPIC_QUEUE1和MQConfig.TOPIC_QUEUE2的监听者。
controller
测试 :
产生日志
5. header模式
配置
sender
receive
controller
测试
控制台打印
ps: 本项目只是用到了rabbitmq中的文件和controller中的DemoController,源码中的其它内容可以根据自己的情况查看。
源码: https://github.com/LUK-qianliu/miaosha