SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.23 SpringBoot 整合 RabbitMQ(direct 模式)
创始人
2024-02-08 21:32:57

SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 开发实用篇

文章目录

      • SpringBoot
      • SpringBoot 开发实用篇
      • 5 整合第三方技术
        • 5.23 SpringBoot 整合 RabbitMQ(direct 模式)
          • 5.23.1 AMQP
          • 5.23.2 整合 RabbitMQ
          • 5.23.3 小结

5 整合第三方技术

5.23 SpringBoot 整合 RabbitMQ(direct 模式)

5.23.1 AMQP

现在我们已经把RabbitMQ 装上了

之前我们做ActiveMQ 的时候

默认是p2p 模型

在这里插入图片描述

在这里插入图片描述

而在AMQP 中

在这里插入图片描述

5.23.2 整合 RabbitMQ

【导入坐标】

org.springframework.bootspring-boot-starter-amqp

按照协议名导入的

在这里插入图片描述

【配置】

rabbitmq:host: localhostport: 5672

在这里插入图片描述

【实现】

在这里插入图片描述

在这里插入图片描述

先把之前做的 ActiveMQ 实现的注掉

【配置类】

package com.dingjiaxiong.service.impl.rabbitmq.direct.config;import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** ClassName: RabbitConfigDirect* date: 2022/10/22 21:29** @author DingJiaxiong*/@Configuration
public class RabbitConfigDirect {//存储消息的消息队列的对象@Beanpublic Queue directQueue(){return new Queue("direct_queue"); //是否持久化、是否连接专用、是否自动删除【后面其实有三个boolean参数,默认值是tff】}//还可以再来个队列,让它绑在同一个交换机上@Beanpublic Queue directQueue2(){return new Queue("direct_queue2"); //是否持久化、是否连接专用、是否自动删除【后面其实有三个boolean参数,默认值是tff】}//消息队列不能直接使用,需要使用一个交换机去绑定它@Beanpublic DirectExchange directExchange(){return new DirectExchange("directExchange");}//做消息队列与交换机的绑定关系@Beanpublic Binding bindingDirect(){return BindingBuilder.bind(directQueue()).to(directExchange()).with("direct");}//做消息队列与交换机的绑定关系@Beanpublic Binding bindingDirect2(){return BindingBuilder.bind(directQueue2()).to(directExchange()).with("direct2");}}

实现类

package com.dingjiaxiong.service.impl.rabbitmq.direct;import com.dingjiaxiong.service.MessageService;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** ClassName: MessageServiceRabbitmqDirectImpl* date: 2022/10/22 21:25** @author DingJiaxiong*/@Service
public class MessageServiceRabbitmqDirectImpl implements MessageService {@Autowiredprivate AmqpTemplate amqpTemplate;@Overridepublic void sendMessage(String id) {System.out.println("待发送短信的订单已纳入处理队列(rabbitmq direct),id " + id);amqpTemplate.convertAndSend("directExchange","direct",id);}@Overridepublic String doMessage() {return null;}
}

做一个自动监听

package com.dingjiaxiong.service.impl.rabbitmq.direct;import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;/*** ClassName: MessageListener* date: 2022/10/22 21:40** @author DingJiaxiong*/@Component
public class MessageListener {//收一个消息@RabbitListener(queues = "direct_queue")public void receive(String id){System.out.println("已完成短信发送业务(rabbitmq direct),id:" + id);}}

有了这个监听就不用去手动消费了

OK, 直接开启服务器测试

生产一个

在这里插入图片描述

这个就是listener 自动处理的

看看控制台

在这里插入图片描述

可以看到已经有两个消息队列了

来自我们初始化时,配置类中

在这里插入图片描述

这两个东西

稍微修改一下

把监听类放到一个包里

在这里插入图片描述

将其复制一个2

package com.dingjiaxiong.service.impl.rabbitmq.direct.listener;import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;/*** ClassName: MessageListener* date: 2022/10/22 21:40** @author DingJiaxiong*/@Component
public class MessageListener2 {//收一个消息@RabbitListener(queues = "direct_queue")public void receive(String id){System.out.println("已完成短信发送业务(rabbitmq direct two),id:" + id);}}

现在就有两个监听, 而且都监听的是同一个队列

直接启动看看效果

在这里插入图片描述

我一共发了四次

可以看到它俩是轮流着在对消息进行处理

就是这样,回顾一下

  • 导入SpringBoot整合RabbitMQ坐标

在这里插入图片描述

  • 配置RabbitMQ (采用默认配置)

在这里插入图片描述

  • 定义消息队列(direct)

在这里插入图片描述

  • 定义消息队列(direct)

在这里插入图片描述

在这里插入图片描述

  • 生产与消费消息(direct)

在这里插入图片描述

  • 使用消息监听器对消息队列监听(direct)

在这里插入图片描述

  • 使用多消息监听器对消息队列监听进行消息轮循处理(direct)

在这里插入图片描述

5.23.3 小结
  1. SpringBoot整合RabbitMQ直连交换机模式【direct】

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...