当前位置: 首页 > news >正文

ActiveMQ classic ,artemis ,artemis console ,nms clients,cms client详解

详细解析 ActiveMQ Classic、ActiveMQ Artemis、它们的控制台以及 NMS 和 CMS 客户端。


1. ActiveMQ Classic (原 ActiveMQ 5.x)

是什么?
ActiveMQ Classic 是 Apache 软件基金会下的开源、多协议、基于 Java 的消息代理(Message Broker)的传统版本。它是最广泛使用和久经考验的版本,通常直接被称为 “ActiveMQ”。

核心特性:

  • 多协议支持: 原生支持多种协议,如 OpenWire(默认,高性能二进制协议)、STOMP、AMQP、MQTT、REST 等,允许不同技术的客户端连接。
  • 持久化: 支持将消息持久化到各种存储中,如 KahaDB(默认、高性能)、JDBC(数据库)、LevelDB(已弃用)等,确保消息不丢失。
  • 高级特性: 支持主从模式、网络桥接(Network of Brokers)、消息组、虚拟目的地、通配符订阅等复杂的企业级功能。
  • 成熟稳定: 经过多年发展,社区庞大,非常稳定,拥有大量的生产部署案例。

架构:
主要基于阻塞式 I/O,每个连接对应一个线程。这在处理大量并发连接时可能成为资源瓶颈。

适用场景:

  • 传统的企业级应用集成(EAI)。
  • 需要与大量旧系统(使用不同协议)集成的场景。
  • 对稳定性要求极高,且对极致性能要求不那么苛刻的项目。

2. ActiveMQ Artemis (原 HornetQ)

是什么?
ActiveMQ Artemis 是 下一代 的 ActiveMQ 消息代理。它源于 JBoss 的 HornetQ,在捐赠给 Apache 后重新命名。它并非 Classic 的简单升级,而是一个从头开始构建的全新架构。

核心特性与优势:

  • 高性能非阻塞架构: 使用 Netty 框架实现了非阻塞 I/O,采用单线程“事件驱动”模型处理大量连接,性能极高,尤其在处理大量并发连接和低延迟场景中表现卓越。
  • 强大的持久化: 使用 Journal(日志文件)进行高性能消息持久化,并可选搭配 JDBC 存储绑定信息。其持久化性能远超 Classic 的 KahaDB。
  • 100% 协议无缝转换: 核心特性。Artemis 在协议层实现了完整的转换,例如,一个使用 AMQP 协议的生产者发送的消息,可以被一个使用 MQTT 协议的消费者接收,代理自动处理所有转换。
  • LMAX Disruptor 集成: 在其核心大量使用了无锁高性能线程间通信库 LMAX Disruptor,进一步提升了吞吐量。
  • 嵌入式友好: 可以非常容易地作为库嵌入到其他 Java 应用中。

与 Classic 的关系:
Artemis 是 ActiveMQ 项目的未来。Apache 官方的目标是让 Artemis 最终完全取代 Classic。对于新项目,强烈推荐直接使用 Artemis

适用场景:

  • 所有新项目和对性能有要求的项目。
  • 云原生和微服务架构,需要处理万级并发连接。
  • 需要多种协议(AMQP, MQTT, STOMP, OpenWire)互操作的物联网(IoT)场景。
  • 需要极低延迟和高吞吐量的金融交易等场景。

3. Artemis Console (Web 控制台)

是什么?
ActiveMQ Artemis 自带了一个现代化的、功能丰富的 Web 管理控制台。它默认集成在 broker 中,无需像 Classic 那样额外安装 Hawtio 或 ActiveMQ Web Console。

如何访问:
Artemis 启动后,默认可以通过 http://<server-host>:8161/console 访问。

核心功能:

  • 仪表盘: 总览消息数量、连接数、消费者数等。
  • 目的地管理: 查看、创建、删除队列(Queues)和主题(Topics),查看消息列表(可以浏览消息头和数据),甚至可以发送测试消息。
  • 连接管理: 查看所有客户端连接及其详细信息(IP、协议、会话等)。
  • 日志查看: 直接在线查看 broker 的日志文件。
  • JMX 操作: 提供了对底层 JMX MBean 的友好操作界面。

与 Classic 控制台对比:
Classic 的控制台功能相对简单和陈旧。Artemis Console 是全新的,功能更强大,用户体验更好,是 Artemis 的一大亮点。


4. NMS Client (Apache.NMS) 和 CMS Client (ActiveMQ-CPP)

这两个都是 C++ 语言的客户端库,用于连接 ActiveMQ broker,但它们是完全不同的项目。

NMS Client (Apache.NMS API for C++)
  • 全称NMS (Native Messaging Service)
  • 本质: 它是一个 C++ 对 JMS API 的移植和实现。NMS 的目标是提供一个与 Java 中 JMS API 非常相似的编程模型给 C++ 开发者。
  • 协议: 主要使用 OpenWire 协议与 ActiveMQ Classic 通信。
  • 状态: 该项目目前维护不太活跃。它主要与 ActiveMQ Classic 配合使用。
CMS Client (ActiveMQ-CPP)
  • 全称C++ Messaging Service
  • 本质: 它是一个原生的 C++ 消息 API并非 JMS 的移植。它的设计更符合 C++ 的编程习惯和范式(例如,大量使用智能指针、STL 等)。
  • 协议: 支持多种协议,包括 OpenWire(连接 Classic)和 Core Protocol(连接 Artemis,这是默认且推荐的方式)。
  • 状态: 这是 官方推荐和主流的 C++ 客户端,特别是用于连接 ActiveMQ Artemis。它维护得更好,与 Artemis 的集成更紧密。

总结与对比

特性/项目ActiveMQ ClassicActiveMQ Artemis
本质传统的、成熟的消息代理下一代、高性能、全新架构的消息代理
架构阻塞式 I/O,线程 per-connection非阻塞 I/O (Netty),事件驱动,高性能
持久化KahaDB, JDBC高性能 Journal + JDBC
协议支持多协议(OpenWire, STOMP, AMQP, MQTT)多协议(原生无缝转换,Core, OpenWire, AMQP, MQTT, STOMP)
C++ 客户端推荐NMS (Apache.NMS) - 已不推荐CMS (ActiveMQ-CPP) - 官方推荐
Web 控制台功能较简单的老式控制台功能强大的现代化控制台 (集成在 broker 中)
推荐选择维护旧系统或需要特定 Classic 特性的项目所有新项目,以及对性能、扩展性有要求的场景

建议:

  1. 新项目选型: 毫不犹豫地选择 ActiveMQ Artemis
  2. C++ 开发: 使用 ActiveMQ-CPP (CMS) 库来连接 Artemis(使用 tcp:// 和 core 协议)或 Classic(使用 tcp:// 和 openwire 协议)。
  3. Java 开发: 使用标准的 JMS 2.0 API。Artemis 提供了高效的 JMS 客户端。
  4. 管理监控: Artemis 内置的控制台已经非常强大,对于高级监控,可以集成 Jolokia 和 Grafana/Prometheus。

文章转载自:

http://08Q9A1oA.qksdd.cn
http://BM6WCiCI.qksdd.cn
http://oXMWWzkW.qksdd.cn
http://RdiXnjuR.qksdd.cn
http://rX1yBOCL.qksdd.cn
http://Y9yM8ivE.qksdd.cn
http://nx1Mz90D.qksdd.cn
http://iAZ9uJ9I.qksdd.cn
http://MgZ9mWTZ.qksdd.cn
http://a8qoWX4e.qksdd.cn
http://1602Sf0M.qksdd.cn
http://HQp0H0dz.qksdd.cn
http://gJt01wn5.qksdd.cn
http://Vq4hEYeB.qksdd.cn
http://XdbNpgCU.qksdd.cn
http://xwhGXFTI.qksdd.cn
http://Ei9Cd4tz.qksdd.cn
http://rjkgYTBS.qksdd.cn
http://JgjTHQN3.qksdd.cn
http://jCJ6pExu.qksdd.cn
http://vgKJRyOa.qksdd.cn
http://1uYFB1rE.qksdd.cn
http://A9CnxTgu.qksdd.cn
http://jrSkWla3.qksdd.cn
http://JKp1LdXh.qksdd.cn
http://6e0qv65Y.qksdd.cn
http://pTyabBHF.qksdd.cn
http://mwfh6WgM.qksdd.cn
http://5Qn74DL5.qksdd.cn
http://grFHjKDS.qksdd.cn
http://www.dtcms.com/a/372843.html

相关文章:

  • 【论文阅读】Far3D: Expanding the Horizon for Surround-view 3D Object Detection
  • Three.js使用outlinePass描边后,描边颜色和背景叠加变淡
  • GPT系列--类GPT2源码剖析
  • 反编译分析C#闭包
  • DTO与POJO:核心差异与最佳实践
  • #C语言——刷题攻略:牛客编程入门训练(九):攻克 分支控制(三)、循环控制(一),轻松拿捏!
  • Android 中 自定义 RecyclerView 控件限制显示高度
  • Codesy中的UDP发送信息
  • Hadoop进程:深入理解分布式计算引擎的核心机制
  • SQL Server死锁排查实战指南
  • 自学嵌入式第三十八天:数据库
  • 【开题答辩全过程】以 基于springboot的酒店管理系统设计与实现为例,包含答辩的问题和答案
  • SpringBoot控制层接收参数处理、Logback日志入门和使用
  • Python快速入门专业版(十三):Python变量进阶:全局变量与局部变量(含global关键字用法)
  • 深度学习(二):神经元与神经网络
  • 如何在不同 iOS 设备上测试和上架 uni-app 应用 实战全流程解析
  • iOS 开发全流程实战 基于 uni-app 的 iOS 应用开发、打包、测试与上架流程详解
  • [论文阅读] 人工智能 + 软件工程 | 大模型破局跨平台测试!LLMRR让iOS/安卓/鸿蒙脚本无缝迁移
  • 汇编基础1
  • CSS @scope与12个降低css冲突方法
  • pytorch 中是如何实现embeding 的
  • 【.Net技术栈梳理】02-核心框架与运行时(GC管理)
  • 洗完头后根据个人需求选择合适的自然风干 | 电吹风 (在保护发质的同时,也能兼顾到生活的便利和舒适。)
  • 人才教育导向下:老年生活照护实训室助力提升学生老年照护服务能力
  • Typescript入门-类型断言讲解
  • 使用Pycharm进行远程ssh(以Featurize为例)
  • 云原生:微服务与Serverless指南
  • 时序数据库选型指南:大数据与物联网时代下的深度剖析与 Apache IoTDB 实践
  • Python 实现 HTML 转 Word 和 PDF
  • 亚马逊长尾关键词怎么找?从传统运营到DeepBI的智能策略演进