问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ActiveMQ 架构设计核心概念解析

创作时间:
作者:
@小白创作中心

ActiveMQ 架构设计核心概念解析

引用
CSDN
1.
https://blog.csdn.net/2401_86610558/article/details/145042859

ActiveMQ作为一款广受欢迎的开源消息中间件,在分布式系统中的异步通信和模块解耦方面发挥着重要作用。本文将深入解析ActiveMQ的核心架构设计概念,帮助读者更好地理解和使用这一强大的工具。

Broker

  • 定义:Broker是ActiveMQ架构的核心枢纽,它充当了服务器的角色,负责接收、存储与转发消息。可以把它想象成一个邮局,不同的应用程序就像是寄信人和收信人,而Broker负责信件(消息)的中转与暂存。

  • 功能实现:它内置了完善的消息存储机制,像KahaDB这种默认的持久化存储引擎,能把接收到的消息写入磁盘,以防系统崩溃丢失数据。Broker还维护着队列与主题的相关元数据,精准调度消息到对应的目的地。例如,当有生产者发送消息到某个队列时,Broker核查队列信息,将消息入队;面对订阅主题的消费者,它依据订阅规则推送相关主题消息。

Producer(生产者)

  • 定义:生产者是消息的源头,是那些产生数据、事件的应用程序组件。在电商系统里,订单创建模块就是典型的生产者,每次生成新订单时,它就向ActiveMQ发送包含订单详情的消息。

  • 交互逻辑:生产者与Broker建立连接,采用如TCP或者NIO等传输协议。连接成功后,利用消息API(例如Java中的JMS API)创建消息对象,填充业务数据,再将消息发送到指定的队列或者主题。发送时,还能设置消息优先级、存活时间等属性,满足多样化业务需求。

Consumer(消费者)

  • 定义:消费者负责接收并处理来自Broker的消息。以物流系统对接电商订单系统为例,物流系统中的订单处理模块就是消费者,它接收订单消息安排发货等后续流程。

  • 消费模式:分为两种主流模式,即推(PUSH)模式和拉(PULL)模式。推模式下,Broker主动将匹配消费者订阅的消息推送过来,消费者实时响应处理;拉模式则是消费者主动向Broker请求获取消息,适合消费者自主把控消息获取节奏的场景,比如批量处理任务时,消费者按批次拉取消息,提升处理效率。

Queue(队列)

  • 定义:队列是一种点对点(P2P)的消息传递模型。消息被发送到队列后,只会被一个消费者获取处理。这就好比银行窗口排队,每个客户(消息)依次等待唯一的服务窗口(消费者)服务。

  • 特性优势:保证了消息处理的唯一性,适合任务分配场景,例如任务调度系统将一个个独立的任务放进队列,众多worker节点竞争消费,确保每个任务仅执行一次,避免重复处理。

Topic(主题)

  • 定义:主题基于发布/订阅(Publish/Subscribe)模型。一个生产者向主题发布消息后,所有订阅该主题的消费者都会收到消息副本。如同报社发布新闻(消息),众多订阅该报纸(主题)的读者(消费者)都能看到内容。

  • 应用场景:适合数据广播场景,像股票行情系统,行情数据生产者向特定主题发布股价更新消息,众多订阅该主题的客户端即时收到最新行情,同步数据状态。

Message(消息)

  • 结构组成:消息是ActiveMQ传输的数据单元,通常由消息头、消息体和消息属性三部分构成。消息头携带如消息ID、目的地、时间戳等基础元数据,用于消息路由与识别;消息体则容纳真实业务数据,支持文本、字节数组、序列化Java对象等多种格式;消息属性用于附加自定义的业务相关键值对,例如订单消息里附上订单优先级属性,方便下游消费者针对性处理。

  • 生命周期:生产者创建消息后发送给Broker,Broker依据消息目的地存储与转发,消费者接收处理后,消息或标记已消费,或按策略删除、归档,结束其流转旅程。

Connection Factory(连接工厂)

  • 作用:连接工厂是创建连接对象的工厂类,为客户端(生产者、消费者)与Broker搭建通信链路。在Java应用里,开发人员配置好连接工厂参数,像Broker地址、端口、用户名密码等认证信息,就能便捷获取连接实例,隐藏复杂连接创建细节,遵循工厂设计模式,提升代码可维护性与复用性。

Connection(连接)与 Session(会话)

  • Connection:代表客户端与Broker的物理通信链路,是持久化的TCP连接或者其他协议连接。它保障消息传输通道稳定,通常是一个应用与一个Broker间建立单个连接,然后在连接基础上创建多个会话。

  • Session:会话建立在连接之上,是操作消息的上下文环境。在会话里,生产者发送消息、消费者接收消息,还能控制事务,决定一批消息是同步提交还是回滚,保障业务逻辑原子性,例如一批订单消息要么全部成功发送到Broker,要么全部回滚取消发送。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号