-
springcloud17:stream消息驱动
- 解决了什么?
MQ(消息中间件) ActiveMQ RabbitMQ Kafka RocketMQ
学习消息中间件负担重
一整个工程可能存在多个MQ,技术切换和维护开发都很困难 - 新技术诞生
不再关注具体MQ的细节,只需要直接适配绑定自动在各种MQ内替换
Stream 屏蔽底层插件,统一消息的编程模型 - springcloud stream(构建消息驱动微服务的框架)
binder:绑定器(通过binder来交互) - springcloud stream 涉及思想
binder的设计思想
发送消息Message,然后到消息通道MessageChnnel,最后订阅MessageHandler的来取消息
引入stream:定义绑定器实现了屏蔽应用程序和消息中间件的细节
Binder作为中间层:Output消费者 Input生产者(发布订阅模式) - stream常用流程套路和注解
流程套路:消息生产者-》channel队列(存储转发)-》Binder-》MQ组件-》Binder-》channel队列(存储转发)-》消息消费者
注解:@Input 接受者 @Output 发送者 @StreamListener 接受队列
案例说明:新建三个子模块和RabbitMQ
消息生产者:开启通道,开启绑定器,与绑定器打交道
生产者Source(身份表明)(位于通道和生产者之间)
在exchange这交换消息
消费者Sink(身份表明)(位于通道和消费者之间) - 消息重复消费和消息持久化问题(靠分组特性解决)
一个生产者生产两条消息,两个消费者都能收到两条消息
消息只能被一条消息收到
分组解决:同一个组多个消费者竞争消费一次,多个组即多次(默认每一个服务的组都不同),组流水号不同,被认为不同组可以消费
自定义配置分组(两个服务不同的组)
自定义配置分为同一个组(两个服务相同的组) - 持久化问题
group自动支持持久化(能够捡起来之前发的没消费)
不加group(可能会错过消息)
-
相关阅读:
Linux bash 添加用户命令 adduser 和 useradd 对比试用 2208110652
学习 MySQL 需要知道的 28 个小技巧
MyBatis(一)--------十分灵活
【切片】基础不扎实引发的问题
探测工具nmap简介及使用说明
【visionOS】从零开始创建第一个visionOS程序
Logback 日志格式参数说明
1.4.16 实验16:ABR汇总
SwiftUI 导航设置
用Postman发送xml数据
-
原文地址:https://blog.csdn.net/qq_44724899/article/details/128025899