专题目标

消息总线规范

消息资产可视

消费关系可视

异常告警可视

消息场景

消息应用场景

  • 流量削峰,同步转异步,业务对数据实时处理要求不高,异步处理,提高接口性能
  • 应用解耦,上下游之前从直接调用关系,变成基于消息订阅发布,避免上游系统对下游系统接口过度依赖问题
  • 分布式事务,使用本地消息表+消息中间件异步通知实现的分布式事务方案
  • 日志处理,常见于日志采集和分析场景,通过消息队列做数据缓冲

消息体类别

  • 第一类:纯通知型消息,内容对下游业务无关

消息上游通知下游进行下一步逻辑动作,消息体本身内容没有额外意义,用于回调上游应用数据。

  • 第二类:消息内容,对下游业务逻辑强相关

消息下游强依赖消息上游的消息内容,一旦逻辑结构改变,则会出现业务缺陷。

该类消息应该标准化,以领域对象来构建消息,下游系统基于标准消息体,进行逻辑开发;上游系统不应针对下游系统提供差异化的消息。

消息投递,强制用Topic

消息市场

消息分类

  • 通过项目注册标签来动态的

消息体版本

  • 通过注解,结合Java 序列化版本标志来控制,模板类制成。上下游消息队列协作
  • 消息体向下兼容,下游订阅的内容不会随消息提升版而失效(即发布方的任何变更不应该引起消费方原有的消费变化、消息版本由中心统一加

消息发布

  • 自定义Service,发送至事件服务
  • 动态注册消息发布者
  • 消息生产者先发布更新,消息消费者后消费(如有消费方有比较大的逻辑调整,则按该逻辑调整)

消息订阅

  • 自定义注解,重写RabbitLisener
  • 动态注册消息订阅者

消息权限

  • 消息体含敏感信息,消息的消费方应该由权限控制,rabbit mq本身可以通过对vhost进行有效控制

消息可视

  • 消费者和生产者的关系拓扑可见
  • 消息消费和生产的流量速率可视

消息监控

消息消费异常

  • 消费失败
  • 重试失败

消息生产堆积

  • 队列不存在消费者
  • 队列不存在生产者
  • 队列消费能力异常

下游消费异常的规范写法(SDK)

消息总线

事务消息

普通消息

  • 直接采用rabbit mq本身自带的即可

消息增强

  • 消息重试
  • 消息延迟
  • 消息持久
作者:李世荣  创建时间:2021-11-03 15:09
最后编辑:王浩彬  更新时间:2024-04-28 09:23