rocketMQ 调用mqadmin unable to calculate a request signature. error=Algorithm HmacSHA1 not available

调用报错

sh mqadmin topicList -n 127.0.0.1:9876

RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
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:140)
    at org.apache.rocketmq.tools.command.MQAdminStartup.main(MQAdminStartup.java:91)
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:69)
    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:372)
    at org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicListFromNameServer(MQClientAPIImpl.java:1392)
    at org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.fetchAllTopicList(DefaultMQAdminExtImpl.java:253)
    at org.apache.rocketmq.tools.admin.DefaultMQAdminExt.fetchAllTopicList(DefaultMQAdminExt.java:218)
    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

原因

由于使用的是openjdk,bin/tools.sh 依赖 ${JAVA_HOME}/lib/ext jar包 ,具体如下:

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext"
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

所以通过定义JAVA_HOME

解决方法

rpm -qa | grep jdk
jdk1.8-1.8.0_291-fcs.x86_64

rpm -ql  jdk1.8-1.8.0_291-fcs.x86_64 |grep '/jre/lib/ext'
/usr/java/jdk1.8.0_291-amd64/jre/lib/ext

export JAVA_HOME=/usr/java/jdk1.8.0_291-amd64

sh mqadmin topicList -n 127.0.0.1:9876

你可能感兴趣的:(rocketMQ 调用mqadmin unable to calculate a request signature. error=Algorithm HmacSHA1 not available)