You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ActiveMQ Artemis如何通过JMX/Jolokia获取已配置acceptors列表

ActiveMQ Artemis通过Jolokia批量获取acceptor并重载TLS证书方案

问题根因

直接查询broker根MBean的请求仅返回broker核心属性,acceptor属于独立子组件MBean,需要指定对应的组件路径才能查询到相关信息。另外注意原请求中的broker名称拼写为borker-primary-0,请先确认是否和实际部署的broker名称一致,拼写错误也会导致查询结果不符合预期。

1. 获取所有已配置的acceptor名称

使用如下curl请求可直接查询所有acceptor的MBean信息:

curl -s -f -u username:password -H 'Origin: localhost' 'http://127.0.0.1:8161/console/jolokia/read/org.apache.activemq.artemis:broker="broker-primary-0",component=acceptors,name=*'

结合jq工具可以直接提取所有acceptor的名称列表:

curl -s -f -u username:password -H 'Origin: localhost' 'http://127.0.0.1:8161/console/jolokia/read/org.apache.activemq.artemis:broker="broker-primary-0",component=acceptors,name=*' | jq -r '.value | keys[]'

2. 批量重载所有acceptor的TLS证书

可通过如下shell脚本实现自动获取acceptor列表并批量执行重载操作,无需跟随配置变更修改代码:

# 自定义配置项
BROKER_NAME="broker-primary-0"
JOLOKIA_ENDPOINT="http://127.0.0.1:8161/console/jolokia"
AUTH_CRED="username:password"

# 拉取所有acceptor名称
ACCEPTOR_LIST=$(curl -s -f -u "$AUTH_CRED" -H 'Origin: localhost' "$JOLOKIA_ENDPOINT/read/org.apache.activemq.artemis:broker=\"$BROKER_NAME\",component=acceptors,name=*" | jq -r '.value | keys[]')

# 循环执行重载
for ACCEPTOR_NAME in $ACCEPTOR_LIST; do
  echo "正在重载acceptor:$ACCEPTOR_NAME"
  curl -s -f -u "$AUTH_CRED" -H 'Origin: localhost' -H 'Content-Type: application/json' \
    "$JOLOKIA_ENDPOINT/exec/org.apache.activemq.artemis:broker=\"$BROKER_NAME\",component=acceptors,name=\"$ACCEPTOR_NAME\"/reload()"
done

版本适配说明

  • 该方案仅支持ActiveMQ Artemis v2.18.0及以上版本,该版本开始正式支持acceptor的TLS证书热重载能力
  • 仅配置了TLS参数的acceptor执行重载操作会生效,未配置TLS的acceptor执行该操作无额外影响

内容的提问来源于stack exchange,提问作者Stephan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:39:02