ActiveMQ Artemis
Artemis版本作为Classic版本的替代品而诞生,相较的提升点有:
高性能与低延迟:Artemis通过改进的设计实现了更高的吞吐量和更低的消息处理延迟。
存储机制:使用了不同的持久化策略和日志结构Journal文件系统,以获得更好的写性能和恢复速度。
内存管理:内存使用效率更高,尤其是在处理大量小消息时表现更好。
集群和HA:提供了更先进的高可用性解决方案和更灵活的集群模式。
协议支持:除了原有的JMS之外,对AMQP 1.0的支持更加成熟和完善,并且也支持STOMP等多种协议。
架构更新:整体架构更为现代化,为云原生环境和大规模分布式部署进行了优化。
Artemis消息默认会持久化到journal目录下,journal单个日志文件默认10MB,默认会预分配2个日志文件。当数量超过10个日志文件并且实时消息占到30%时,会启动压缩日志文件。
默认所有队列能保存的消息总数为jvm启动内存的一半。当队列占用jvm内存一半时,接收到的消息默认会paging到paging目录下,每个paging日志文件默认也是10MB。
默认的max-disk-usage为90%,即artemis会监测数据目录所在的文件系统,使用率超过90%时,不再接收生产者发送的消息。
当修改了broker.xml配置文件,artemis会自动reload配置而无须重启进程。默认artemis每隔5秒检测一次broker.xml配置文件是否被修改。
page-sync-timeout,journal-buffer-timeout为artemis自身评估生成的值。
#号表示匹配除管理队列之外的所有队列
此命令可以查看队列状态,也可以应用于自定义监控,如zabbix中自定义的队列积压监控告警
1 | ./artemis queue stat --user xxxx --password xxxx |
在主节点进行操作
1.将安装包放入解压至data目录
1 | tar xvf apache-artemis-2.19.1-bin.tar.gz -C /data/ |
2.创建一个broker实例:
1 | bin/artemis create --user admin --password admin --require-login --clustered --cluster-user admin --cluster-password admin --encoding UTF-8 --replicated --host 10.8.1.54 --staticCluster "tcp://10.8.1.54:61616,tcp://10.8.1.55:61616,tcp://10.8.1.56:61616" brokers |
3.修改配置文件:
1 | cd brokers/etc |
4.修改broke.yaml
1 | cp broke.yaml broke.yaml_bak |
在从节点进行操作(添加–slave参数,表示该节点为从节点),其它操作与主节点一致
1 | bin/artemis create --user admin --password admin --require-login --clustered --cluster-user admin --cluster-password admin --encoding UTF-8 --replicated --host 10.8.1.55 --staticCluster "tcp://10.8.1.54:61616,tcp://10.8.1.55:61616,tcp://10.8.1.56:61616" --slave brokers |
部署完成后默认为1主1从1仲裁,界面中只有主从能获取队列信息,仲裁节点负责主从节点的心跳监控和接管,当主节点故障时,从节点升级为主节点,仲裁节点接管为从节点。
在artemis界面operations中的resetUser可以修改artemis界面的登录用户密码,
username: 用户名
role:可以通过broke安装目录的artemis-roles.properties配置文件中查看
password: 密码
plaintext:勾选时密码会在artemis-users.properties配置文件中以明文保存,不勾选则会进行hash加密保存。
执行成功后文件会进行更新,修改只会影响当前主机artemis登录密码,其它节点artemis登录密码不会进行同步
注:artemis有页面登录用户和访问控制用户,修改后者时需慎重,修改后需要重启生产者程序与消费组程序,否则程序报错(用户认证失败)无法连接mq。