rocketMQ:mqadmin运行时报错org.apache.rocketmq.tools.command.SubCo..

本文详细解析了在使用Apache RocketMQ时遇到的TopicListSubCommand异常错误,该错误源于AclSigner无法计算请求签名,具体表现为AlgorithmHmacSHA1不可用。文章提供了具体的解决步骤,包括修改tools.sh文件中的JAVA_OPT配置,添加正确的jre/lib/ext路径,确保HmacSHA1算法可用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误:

org.apache.rocketmq.tools.command.SubCommandException: TopicListSubCommand command failed
    at org.apache.rocketmq.tools.command.topic.TopicListSubCommand.execute(TopicListSubCommand.java:113)
    at org.apache.rocketmq.tools.command.MQAdminStartup.main0(MQAdminStartup.java:138)
    at org.apache.rocketmq.tools.command.MQAdminStartup.main(MQAdminStartup.java:89)
Caused by: org.apache.rocketmq.acl.common.AclException: [10015:signature-failed] unable to calculate a request signature. error=[10015:signature-failed] unable to calculate a request signature. error=Algorithm HmacSHA1 not available
    at org.apache.rocketmq.acl.common.AclSigner.signAndBase64Encode(AclSigner.java:84)
    at org.apache.rocketmq.acl.common.AclSigner.calSignature(AclSigner.java:73)
    at org.apache.rocketmq.acl.common.AclSigner.calSignature(AclSigner.java:68)
    at org.apache.rocketmq.acl.common.AclUtils.calSignature(AclUtils.java:68)
    at org.apache.rocketmq.acl.common.AclClientRPCHook.doBeforeRequest(AclClientRPCHook.java:44)
    at org.apache.rocketmq.remoting.netty.NettyRemotingAbstract.doBeforeRpcHooks(NettyRemotingAbstract.java:172)
    at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:370)
    at org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicListFromNameServer(MQClientAPIImpl.java:1358)
    at org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.fetchAllTopicList(DefaultMQAdminExtImpl.java:246)
    at org.apache.rocketmq.tools.admin.DefaultMQAdminExt.fetchAllTopicList(DefaultMQAdminExt.java:212)
    at org.apache.rocketmq.tools.command.topic.TopicListSubCommand.execute(TopicListSubCommand.java:107)
    ... 2 more
Caused by: org.apache.rocketmq.acl.common.AclException: [10015:signature-failed] unable to calculate a request signature. error=Algorithm HmacSHA1 not available
    at org.apache.rocketmq.acl.common.AclSigner.sign(AclSigner.java:63)
    at org.apache.rocketmq.acl.common.AclSigner.signAndBase64Encode(AclSigner.java:79)
    ... 12 more
Caused by: java.security.NoSuchAlgorithmException: Algorithm HmacSHA1 not available
    at javax.crypto.Mac.getInstance(Mac.java:181)
    at org.apache.rocketmq.acl.common.AclSigner.sign(AclSigner.java:57)
    ... 13 more

解决方法:
修改tools.sh内的JAVA配置,添加jre/lib/ext目录

gedit tools.sh

修改:

将:
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext"
修改成:
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:/java/jdk1.8.0_241/jre/lib/ext"

注意:jdk11没有jre目录,需要手动下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值