消息中间件常见概念

  • JMS 提供者:连接面向消息中间件的, JMS 接口的一个实现,RocketMQ、ActiveMQ、Kafka 等等
  • JMS 生产者(Message Producer):生成消息的服务
  • JMS 消费者(Message Consumer):消费消息的服务
  • JMS 消息:数据对象
  • JMS 队列:存储待消费消息的区域
  • JMS 主题:一种支持发送消息给多个订阅者的机制
  • JMS 消息通常有两种类型:点对点(Point-to-Point)、发布/订阅(Publish/Subscribe)

基础编程模型

  • MQ 中需要用的一些类
  • ConnectionFactory:连接工程,JMS 用它创建连接
  • Connection:JMS 客户端到 MS Provider 的连接
  • Session:一个发送或接收消息的线程
  • Destination:消息的目的地(消息发送给谁)
  • MessageConsumer / MessageProducer:消息消费者、消息生产者

Rocket MQ 特点:

  • 支持Broker 和 Consumer 端消息过滤
  • 支持发布订阅模式,和点对点
  • 支持拉 pull 和 推 push 两种消息模式
  • 单一队列百万消息、亿级消息堆积
  • 支持单 master 节点, 多 master 节点,多 master 多 slave 节点
  • 任意一点都是高可用,水平拓展,Producer、Consumer、队列都可以分布式
  • 消息失败重试机制、支持特定 level 的定时消息
  • 新版本底层采用 Netty
  • 4.3.x 支持分布式事务
  • 适合金融类业务,高可用性跟踪和审计功能

Rocket MQ概念:

  • Producer
  • Producer Group
  • Consumer
  • Consumer Group
  • Tag:标签,子主题(二级分类)对 topic 的进一步细化,用于区分同一主题下的不同业务的消息
  • Topic:主题,如订单类消息,queue 是消息的物理管理单位,而 topic 是逻辑管理单位,一个 topic 下可以有多个 queue,默认自动创建 4 个,手动创建是 8 个
  • Message:消息,每个 message 必须指定一个 topic
  • Broker:MQ 程序,接收生产的消息,提供给消费者消费的程序
  • Name Server:给生产和消费者提供路由信息,提供轻量级的服务发现、路由、元数据信息,可以多个部署,互相独立(比 zookeper更轻量)
  • Offset:偏移量,可以理解为消息进度
  • commit log:消息存储会写在 commit log 文件里面