• 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