目录
1.2.3 协议管理(Protocol Management)
前言
Artemis是一款基于Netty NIO的高性能消息中间件,它的前身为JBoss的HornetQ,2015捐献给了Apache ActiveMQ社区,并命名为Apache Artemis。
本文将对Artemis的架构做一个简单的解析,将Artemis的架构拆分为两块:Artemis Broker的解析(也可以说是单点实例的Artemis消息代理内部运行架构解析)和Artemis高可用架构解析。
1.Artemis Broker
如下图为Artemis Broker的架构图,Artemis Broker按其所提供的核心功能及外部工具与接口两部分构成。将Broker做出这样的划分实际上为了本文的结构考虑,核心功能和外部工具与接口两部分都是Artemis Broker的组成部分。
1.1 外部工具与接口
1.1.1 命令行工具
Artemis为用户提供了功能丰富的命令行工具,用户可以通过运行Artemis的${INSTANCE}/bin目录下的Artemis脚本加上对应的参数来调用命令行工具,如运行Artemis Broker实例;
${INSTANCE}/bin/Artemis run
Artemis命令行工具构建于Airline之上,Airline是一个基于Java注解解析命令行结构的框架。Artemis中所有的命令工具都实现org.apache.activemq.artemis.cli.commands.Action接口。基于Action的命令行工具层级结构:
HelpAddress (address组的帮助)
HelpData (data组的帮助)
Mask (屏蔽密码操作)
HelpQueue (queue组的帮助命令)
ActionAbstract (org.apache.activemq.artemis.cli.commands)
Migrate1X (迁移1.x版本配置命令)
XmlDataImporter (导入XML消息数据命令)
InputAbstract (org.apache.activemq.artemis.cli.commands)
ConnectionAbstract (org.apache.activemq.artemis.cli.commands.messages)
AbstractAction (org.apache.activemq.artemis.cli.commands)
QueueAbstract (org.apache.activemq.artemis.cli.commands.queue)
UpdateQueue (更新一个队列命令)
CreateQueue (创建一个队列或topic命令)
DeleteQueue (删除队列命令)
AddressAbstract (org.apache.activemq.artemis.cli.commands.address)
ShowAddress (获取地址信息命令)
CreateAddress (创建地址命令)
UpdateAddress (更新地址命令)
DeleteAddress (删除地址命令)
StatQueue (打印出与队列相关的基本统计数据命令)
DestAbstract (org.apache.activemq.artemis.cli.commands.messages)
Browse (浏览指定实例消息命令)
Producer (发送消息到指定实例命令)
Consumer (消费指定实例命令)
UserAction (org.apache.activemq.artemis.cli.commands.user)
PasswordAction (org.apache.activemq.artemis.cli.commands.user)
ResetUser (重置用户密码或角色命令)
AddUser (添加一个新用户命令)
RemoveUser (删除已存在用户命令)
ListUser (列出已存在用户命令)
Create (创建Artemis实例命令)
Configurable (org.apache.activemq.artemis.cli.commands)
Stop (停止Artemis实例命令)
Kill (杀死以--allow-kill方式启动的Artemis实例命令)
DataAbstract (org.apache.activemq.artemis.cli.commands.tools)
LockAbstract (org.apache.activemq.artemis.cli.commands.tools)
EncodeJournal (为一组日志文件的编码设置为内部数据格式命令)
Run (运行Artemis实例命令)
OptionalLocking (org.apache.activemq.artemis.cli.commands.tools)
PerfJournal (计算现在使用磁盘的journal-buffer-timeout设置的建议值命令)
DBOption (org.apache.activemq.artemis.cli.commands.tools)
PrintData (打印数据记录信息命令(注意:在生产服务器运行时不要使用))
XmlDataExporter (以XML格式导出所有消息数据命令)
CompactJournal (压缩非运行服务器的日志命令)
DecodeJournal (将日志的内部格式解码为新的日志文件集命令)
HelpUser (user组的帮助命令)
HelpAction (全局帮助