🖥️ActiveMQ-配置相关
00 分钟
2024-2-20
2024-3-28
type
status
date
slug
summary
tags
category
icon
password

配置

wrapper相关配置

wrapper是干什么用的

ActiveMQ官网上是这么写的(戳此跳转到官网页面)
ActiveMQ uses the Java Service Wrapper to run the broker. To configure how the Java Service Wrapper starts up, you can edit the wrapper.conf located in the bin/win32, bin/linux, or bin/macosx depending on which system you are running it. For more information on the different properties of the Java Service Wrapper, refer to this page
wrapper是个将java打包成windows或者unix的服务的一个工具。它同时还为应用程序提供日记功能,灵活的配置,可靠的运行性能,按需求重新启动,简化应用程序的安装等。

MQ的运行内存修改【需修改】

修改内容

当你下载MQ并解压之后,你会发现文件夹如下所示(下图中,上面为macox、linux版,下图为windows版)
notion image
修改内存可通过修改wrapper.conf文件中的如下命令。
注意此处是通过什么方式启动,就修改哪个文件夹的wrapper.conf啊!比如你是win64启动方式,就改win64文件夹下的.conf,并且你运行的时候也是用win64文件夹下的activemq.bat哈

题外话

在研究的过程中,发现了一个很有意思的东西,在此赘述下。
在bin文件夹下的activemq(unix可执行文件)的源代码中,发现了一个备注
并且在activemq(unix可执行文件)中,也能看到代码为
然后编辑env文件(windows版没有该文件)其中有一段代码如下
也就是说,在此处也可以进行配置,经过测试发现,如果会用bin目录下的activemq进行启动(当然此处window没法用这个启动),就会使用到这个内存修改参数。
  • 如果此文件修改了,使用的bin/xxx/下的activemq,最终wrapper会覆盖掉这个文件夹下的参数;
  • 如果此文件修改了,使用的bin下的activemq,最终使用的是env下的参数;
下图为使用单独文件夹下的activemq启动,如图所示
notion image
下图为使用bin目录下的activemq启动,如图所示
notion image
两者启动的形成的命令行如下(在macos上,其余系统未尝试)
从启动命令能大概看出来,使用wrapper的方式启动,能覆盖到直接用unix执行命令启动

wrapper.log配置【需修改】

引起的问题

ActiveMQ服务器data目录下wrapper.log文件,默认产生的日志是不覆盖的,文件的大小逐渐增大。累加后会出现文件越来越大。所以建议此处进行优化。找到以下代码进行修改。如下面因为所示,一个是最大的文件大小,和最多的文件数量。

优化方式

activemq.xml相关配置

官网介绍

默认的activemq.xml的原文件,详见最后的源文件,其相关内容的配置,详见“极其复杂的官网配置页面

配置管理后台的认证授权【建议修改】

activemq在登录管理后台的时候,是会需要账号密码的。如果需要修改管理后台的登录账号密码,可以修改"conf/jetty-realm.properties/jetty-realm.properties"文件,文件内容如下:
修改形式为 “用户名: 密码, 角色”,此处角色是怎么配置的,比较复杂,可以见"conf/jetty-realm.properties/jetty.xml"

配置broker【根据自己需求更改】

broker就相当于一个Activemq实例

配置允许jmx监控

关闭消息通知

消息通知指的是broker上的操作记录的跟踪和通知,可通过配置关闭

持久化发布订阅模式(topic)管理

按照官网的解释,系统中不应该有离线的持久化订阅者,这样会浪费众多资源。详见官网
所以建议配置以下参数

删除过期的消息

在对应的entry上增加expireMessagesPeriod配置,比如:

删除已经不活跃额订阅者

在broker的数据上增加以下参数
参数
默认
中文描述
英文描述
offlineDurableSubscriberTimeout
-1
删除多久不活跃的订阅者(单位毫秒),如果配置为-1,则不删除
Amount of time (in milliseconds) after which we remove inactive durable subs. Default -1, means don’t remove them
offlineDurableSubscriberTaskSchedule
300000
检查的频率(单位毫秒)
How often we check (in milliseconds)
示例:

队列模式(queue)管理

配置参数

参数名称
描述
配置数据
schedulePeriodForDestinationPurge
检查非活跃状态的queue间隔
3600000
gcInactiveDestinations
声明该队列是否要被扫描到,默认是false
inactiveTimeoutBeforeGC
声明该队列闲置多少秒被删除,默认60秒
其中上面的闲置,代表“无入队记录及无有效订阅”
示例

认证授权

一个ActiveMQ,不能无认证授权的暴漏在外网中,如果这样,会出现信息泄露的风险。所以需要对ActiveMQ的broker进行认证授权配置,这样系统在连接MQ的时候,就必须配置账号密码,提高mq的安全。

明文配置方式

activemq.xml中的配置

在<broker>中,找到<systemUsage>标签,在标签前增加以下插件配置:
此处账号密码可以写死,也可以通过加载配置文件引入,常用的配置方式是使用activemq.xml里面默认引入的配置文件“credentials.properties”,然后使用里面的配置的用户名和密码
比如:
其中“credentials.properties”引入方式是通过(activemq.xml里面是默认使用的):
里面的内容是:

代码中的配置

此处是以springboot为例,代码中需要配置

加密配置方式

具体内容详见官网页面,未仔细研究,大概就是使用credentials_enc.properties的内容,密码形如“ENC(Cf3Jf3tM+UrSOoaKU50od5CuBa8rxjoL)”,如需要可以查看官网

统一配置时间

在broker中使用TimeStampPlugin插件,此为一个时间戳插件,官网解释为:TimeStampPlugin插件
参数
默认
描述
英文描述
futureOnly
false
When the plugin will never set a message’s time stamp and expiration time to a value lower than the original values. When the plugin always update a message’s time stamp and expiration time.truefalse
ttlCeiling
0
表示过期时间上限(程序写的过期时间不能超过此时间,超过则以此时间为准)
When not zero, this value (in ms) limit the expiration time.
zeroExpirationOverride
0
表示过期时间(给未分配过期时间的消息分配过期时间)
When not zero this value (in ms) will override the expiration time for messages that do not have an expiration already set.
也就是统一设置过期时间的上线和默认过期时间

死信队列抛弃策略

死信队列是什么呢?

消息过期后会进入死信队列,如不想抛弃死信队列,默认进入ACTIVEMQ.DLQ队列,且不会自动清除;对于过期的消息进入死信队列还有一些可选的策略:放入各自的死信通道、保存在一个共享的队列(默认),且可以设置是否将过期消息放入队列的开关以及死信队列消息过期时间。

配置方式

使用discardingDLQBrokerPlugin插件,官网解释为:DiscardingDLQBrokerPlugin插件,按照自己的需求,配置一下内容即可

持久化配置

activemq默认的持久化方式为kahaDB,当然如果有特殊需求,还可以配置jdbc作为持久化源。

kahaDB配置

所有参数,详见官网
默认的kahaDB的配置,只有存储路径
可以增加以下配置

存储空间设置

注意,此处<systemUsage>标签有两层,不是我多写了哈

kahaDB日志【测试时才用,测试环境和生产环境不能配置】

在log4j.properties中,增加以下参数,便可以输出kahadb的相关日志

示例配置

activemq.xml

原文件

activemq.xml

天行健,君子以自强不息;地势坤,君子以厚德载物