写在前面:
继续记录自己的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及其实现,如图
- 编写控制层,如图
- 运行,结果如图
3.5.4.3 SpringBoot整合ActivateMQ
3.5.4.3.1 ActivateMQ安装
- 下载ActivateMQ并解压缩,点击网站进行下载,这里用的5.16.5版
- 启动服务,如图
- 访问地址为
http://127.0.0.1:8161/admin/index.jsp
,账号密码均为admin
3.5.4.3.2 整合
- 添加坐标,如图
- 配置yml,如图
- 编写新接口ActivateMQ并注释掉之前的接口实现中的@Service,如图
- 运行,结果如图
- 编写监听器实现自动发送消息,如图
- 运行,如图
3.5.4.4 SpringBoot整合RabbitMQ
3.5.4.4.1 RabbitMQ安装
- 基于Erlang语言编写,需要安装Erlang
- 点击下载Erlang,选择24.2 64位版本下载后傻瓜式安装并重启电脑,因为依赖Windows组件
- 配置环境变量,如图
- 点击下载安装RabbitMQ,如图
,然后自己安装即可。
,下载后傻瓜式安装即可,最后重启电脑
3.5.4.4.2 启动服务
- 使用管理员权限启动命令行并进入到安装路输入命令
rabbitmq-service.bat -start
,如图 - 查看插件状态,命令
rabbitmq-plugins.bat list
,如图
,图中所标为即将使用的管理后台插件 - 开启插件,服务端口:5672,管理后台端口:15672,命令
rabbitmq-plugins.bat enable rabbitmq_management
,如图 - 浏览器查看后台,地址栏输入
http://localhost:15672/
即可,如图 - 键入用户名
guest
,密码guest
登录后如图
3.5.4.4.3 直连Direct模式整合
- 导入坐标,如图
- 配置yml,如图
- 配置消息队列与交换机,如图
- 编写实现类,如图
- 编写消息接收监听器,如图
- 运行发送请求后如图
3.5.4.4.4 主题Topic模式整合
- 导坐标和配置yml与前面一样,不再赘述
- 配置消息队列,如图
- 编写实现类,如图
- 消费者监听,如图
- 运行如图
,即任何topic.xx.id都会被配置里的topic.*.id匹配到 - 更改,如图
,再次运行后如图
,两个队列都会收到消息