• Spring Boot中消息是什么?同步异步消息是啥/都包含那些技术?Activate MQ消息怎么整合


    写在前面
    继续记录自己的SpringBoot学习之旅,这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用!

    3.5.4 消息

    3.5.4.1 简述
    • 消息发送方:生产者
    • 消息接收方:消费者
    • 消息:分为同步消息和异步消息,主流异步消息
    3.5.4.2 异步消息
    3.5.4.2.1 JMS
    • JMS:JavaServiceMessage,一个规范,等同于JDBC规范,提供了与消息服务有关的API接口
    • 消费模型有
      - peer-2-peer:点对点模型,消息发送到一个队列中,队列保存消息,且只能由一个消费者消费或者超时
      - publish-subscribe:发布订阅模型,消息可以被多个消费者消费,生产者和消费者完全独立,不需要感知对方的存在
    • 消息种类有:TextMessage,MapMessage,ByteMessage,StreamMessage,ObjectMessage等
    • 实现产品:ActivateMQ ,Redis,HornetMQ,RabbitMQ,RocketMQ(没有完全遵守规范)
    3.5.4.2.2 AMQP
    • AMQP,Advanced Message Queuing Protocol,一种协议(高级消息队列协议),规范了网络交换的数据格式,兼容JMS
    • 优点:跨平台性,服务器供应商,生产者和消费者可用不同语言实现
    • 消息类型:direct exchange,fanout exchange,topic exchange,headers exchange,system exchange
    3.5.4.2.3 MQTT
    • MQTT Message Queuing Telemetry Transport 消息队列遥测传输,专为小设备设计,是物联网生态系统主要成分之一
    • 拓展:Kafka,一种高吞吐量的分布式发布订阅消息系统,提供实时消息功能
    3.5.4.3 消息案例-发送短信通知
    3.5.4.3.1 案例

    购物订单中的短信通知

    3.5.4.3.2 案例原理实现(以下整合均使用此项目)
    • 创建空web项目
    • 编写接口层OrderService和MessageService及其实现,如图![[Pasted image 20221011142510.png]]
    • 编写控制层,如图![[Pasted image 20221011142549.png]]
    • 运行,结果如图![[Pasted image 20221011142634.png]]
      ![[Pasted image 20221011142649.png]]
      ![[Pasted image 20221011142712.png]]
    3.5.4.3 SpringBoot整合ActivateMQ
    3.5.4.3.1 ActivateMQ安装
    • 下载ActivateMQ并解压缩,点击网站进行下载,这里用的5.16.5版
    • 启动服务,如图![[Pasted image 20221011143551.png]]
    • 访问地址为http://127.0.0.1:8161/admin/index.jsp,账号密码均为admin
    3.5.4.3.2 整合
    • 添加坐标,如图![[Pasted image 20221011145417.png]]
    • 配置yml,如图![[Pasted image 20221011153001.png]]
    • 编写新接口ActivateMQ并注释掉之前的接口实现中的@Service,如图![[Pasted image 20221011152755.png]]
    • 运行,结果如图![[Pasted image 20221011153520.png]]
    • 编写监听器实现自动发送消息,如图![[Pasted image 20221011154105.png]]
    • 运行,如图![[Pasted image 20221011154122.png]]
    3.5.4.4 SpringBoot整合RabbitMQ
    3.5.4.4.1 RabbitMQ安装
    • 基于Erlang语言编写,需要安装Erlang
    • 点击下载Erlang,选择24.2 64位版本下载后傻瓜式安装并重启电脑,因为依赖Windows组件
    • 配置环境变量,如图![[Pasted image 20221122205024.png]]
      ![[Pasted image 20221122205247.png]]
    • 点击下载安装RabbitMQ,如图![[Pasted image 20221122213909.png]]
      ,然后自己安装即可。
      ,下载后傻瓜式安装即可,最后重启电脑
    3.5.4.4.2 启动服务
    • 使用管理员权限启动命令行并进入到安装路输入命令rabbitmq-service.bat -start,如图![[Pasted image 20221122231812.png]]
    • 查看插件状态,命令rabbitmq-plugins.bat list,如图![[Pasted image 20221122232347.png]]
      ,图中所标为即将使用的管理后台插件
    • 开启插件,服务端口:5672,管理后台端口:15672,命令rabbitmq-plugins.bat enable rabbitmq_management,如图![[Pasted image 20221122232633.png]]
    • 浏览器查看后台,地址栏输入http://localhost:15672/即可,如图![[Pasted image 20221122232751.png]]
    • 键入用户名guest,密码guest登录后如图![[Pasted image 20221122232850.png]]
    3.5.4.4.3 直连Direct模式整合
    • 导入坐标,如图![[Pasted image 20221123134753.png]]
    • 配置yml,如图![[Pasted image 20221123134934.png]]
    • 配置消息队列与交换机,如图![[Pasted image 20221123142215.png]]
    • 编写实现类,如图![[Pasted image 20221123142320.png]]
    • 编写消息接收监听器,如图![[Pasted image 20221123142347.png]]
    • 运行发送请求后如图![[Pasted image 20221123142621.png]]
    3.5.4.4.4 主题Topic模式整合
    • 导坐标和配置yml与前面一样,不再赘述
    • 配置消息队列,如图![[Pasted image 20221123150434.png]]
    • 编写实现类,如图![[Pasted image 20221123145942.png]]
    • 消费者监听,如图![[Pasted image 20221123150001.png]]
    • 运行如图![[Pasted image 20221123150043.png]]
      ,即任何topic.xx.id都会被配置里的topic.*.id匹配到
    • 更改,如图![[Pasted image 20221123151225.png]]
      ,再次运行后如图![[Pasted image 20221123151236.png]]
      ,两个队列都会收到消息
  • 相关阅读:
    Springboot配置WebMvcConfig解决Cors非同源访问跨域问题
    【Mysql系列】04_事务
    红黑树实现
    近几年RGBT论文汇总
    飞桨paddlespeech语音唤醒推理C实现
    github desktop 设置 git 项目调用(链接、引用)外部 repo
    企业内容建站系统 ModStartCMS v4.5.0 后台登录改版,登录安全增强
    一道线段树相关算法题
    安卓开发--如何将onPostExecute方法结果返回给调用方?
    拆分Nim游戏 - SG定理
  • 原文地址:https://blog.csdn.net/qq_40903378/article/details/127965881