CentOS 7使用RocketMQ mqadmin命令工具报错

问题描述

我在CentOS 7上安装好RocketMQ之后,使用mqadmin创建topic,命令如下:

./mqadmin updateTopic -n 192.168.77.129:9876 -c DefaultCluster -t test

然后报错信息如下:

org.apache.rocketmq.tools.command.SubCommandException: UpdateTopicSubCommand command failed
	at org.apache.rocketmq.tools.command.topic.UpdateTopicSubCommand.execute(UpdateTopicSubCommand.java:181)
	at org.apache.rocketmq.tools.command.MQAdminStartup.main0(MQAdminStartup.java:135)
	at org.apache.rocketmq.tools.command.MQAdminStartup.main(MQAdminStartup.java:86)
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:58)
	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.getBrokerClusterInfo(MQClientAPIImpl.java:1180)
	at org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.examineBrokerClusterInfo(DefaultMQAdminExtImpl.java:275)
	at org.apache.rocketmq.tools.admin.DefaultMQAdminExt.examineBrokerClusterInfo(DefaultMQAdminExt.java:222)
	at org.apache.rocketmq.tools.command.CommandUtil.fetchMasterAddrByClusterName(CommandUtil.java:83)
	at org.apache.rocketmq.tools.command.topic.UpdateTopicSubCommand.execute(UpdateTopicSubCommand.java:154)
	... 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)
	... 13 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)
	... 14 more

原因及解决方案

原因是安装CentOS 7的时候,系统自带的是jre,并没有安装jdk。通过javac命令可以发现:

[root@localhost local]# javac
bash: javac: command not found...
Similar command is: 'java'
[root@localhost local]# javac -version
bash: javac: command not found...
Similar command is: 'java'

因此我们重新安装一下jdk就好了,安装步骤如下:
1、yum list java-*

[root@localhost local]# yum list java-*
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.njupt.edu.cn
 * extras: centos.ustc.edu.cn
 * updates: mirrors.njupt.edu.cn
Installed Packages
java-1.7.0-openjdk.x86_64                                                                                     1:1.7.0.191-2.6.15.5.el7                                                                    @anaconda
java-1.7.0-openjdk-headless.x86_64                                                                            1:1.7.0.191-2.6.15.5.el7                                                                    @anaconda
java-1.8.0-openjdk.x86_64                                                                                     1:1.8.0.181-7.b13.el7                                                                       @anaconda
java-1.8.0-openjdk-headless.x86_64                                                                            1:1.8.0.181-7.b13.el7                                                                       @anaconda
Available Packages
java-1.6.0-openjdk.x86_64                                                                                     1:1.6.0.41-1.13.13.1.el7_3                                                                  base     
java-1.6.0-openjdk-demo.x86_64                                                                                1:1.6.0.41-1.13.13.1.el7_3                                                                  base     
java-1.6.0-openjdk-devel.x86_64                                                                               1:1.6.0.41-1.13.13.1.el7_3                                                                  base     

2、安装相应版本的jdk:yum install java-1.8.0-openjdk-devel.x86_64

[root@localhost local]# yum install java-1.8.0-openjdk-devel.x86_64
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.njupt.edu.cn
 * extras: centos.ustc.edu.cn
 * updates: mirrors.njupt.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package java-1.8.0-openjdk-devel.x86_64 1:1.8.0.222.b10-0.el7_6 will be installed
--> Processing Dependency: java-1.8.0-openjdk(x86-64) = 1:1.8.0.222.b10-0.el7_6 for package: 1:java-1.8.0-openjdk-devel-1.8.0.222.b10-0.el7_6.x86_64
--> Running transaction check
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.181-7.b13.el7 will be updated
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.222.b10-0.el7_6 will be an update
--> Processing Dependency: java-1.8.0-openjdk-headless(x86-64) = 1:1.8.0.222.b10-0.el7_6 for package: 1:java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64
--> Running transaction check
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.181-7.b13.el7 will be updated
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.222.b10-0.el7_6 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================================================================================================================================================
 Package                                                       Arch                                     Version                                                    Repository                                 Size
===================================================================================================================================================================================================================
Installing:
 java-1.8.0-openjdk-devel                                      x86_64                                   1:1.8.0.222.b10-0.el7_6                                    updates                                   9.8 M
Updating for dependencies:
 java-1.8.0-openjdk                                            x86_64                                   1:1.8.0.222.b10-0.el7_6                                    updates                                   274 k
 java-1.8.0-openjdk-headless                                   x86_64                                   1:1.8.0.222.b10-0.el7_6                                    updates                                    32 M

Transaction Summary
===================================================================================================================================================================================================================
Install  1 Package
Upgrade             ( 2 Dependent packages)

Total size: 42 M
Total download size: 9.8 M
Is this ok [y/d/N]: y
Downloading packages:
java-1.8.0-openjdk-devel-1.8.0.222.b10-0.el7_6.x86_64.rpm                                                                                                                                   | 9.8 MB  00:00:21     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : 1:java-1.8.0-openjdk-headless-1.8.0.222.b10-0.el7_6.x86_64                                                                                                                                      1/5 
warning: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jre/lib/security/java.security created as /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jre/lib/security/java.security.rpmnew
restored /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jre/lib/security/java.security.rpmnew to /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jre/lib/security/java.security
  Updating   : 1:java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64                                                                                                                                               2/5 
  Installing : 1:java-1.8.0-openjdk-devel-1.8.0.222.b10-0.el7_6.x86_64                                                                                                                                         3/5 
  Cleanup    : 1:java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64                                                                                                                                                 4/5 
  Cleanup    : 1:java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64                                                                                                                                        5/5 
  Verifying  : 1:java-1.8.0-openjdk-headless-1.8.0.222.b10-0.el7_6.x86_64                                                                                                                                      1/5 
  Verifying  : 1:java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64                                                                                                                                               2/5 
  Verifying  : 1:java-1.8.0-openjdk-devel-1.8.0.222.b10-0.el7_6.x86_64                                                                                                                                         3/5 
  Verifying  : 1:java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64                                                                                                                                        4/5 
  Verifying  : 1:java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64                                                                                                                                                 5/5 

Installed:
  java-1.8.0-openjdk-devel.x86_64 1:1.8.0.222.b10-0.el7_6                                                                                                                                                          

Dependency Updated:
  java-1.8.0-openjdk.x86_64 1:1.8.0.222.b10-0.el7_6                                                   java-1.8.0-openjdk-headless.x86_64 1:1.8.0.222.b10-0.el7_6                                                  

Complete!

3、vim /etc/profile

添加环境变量:

export JAVA_HOME=/usr/lib/jvm/java

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar

export PATH=$PATH:$JAVA_HOME/bin

4、source /etc/profile

这样修改就生效了,通过javac命令可以看到:

[root@localhost bin]# javac
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files and annotation processors
  -cp <path>                 Specify where to find user class files and annotation processors
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -proc:{none,only}          Control whether annotation processing and/or compilation is done.
  -processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process
  -processorpath <path>      Specify where to find annotation processors
  -parameters                Generate metadata for reflection on method parameters
  -d <directory>             Specify where to place generated class files
  -s <directory>             Specify where to place generated source files
  -h <directory>             Specify where to place generated native header files
  -implicit:{none,class}     Specify whether or not to generate class files for implicitly referenced files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>          Generate class files for specific VM version
  -profile <profile>         Check that API used is available in the specified profile
  -version                   Version information
  -help                      Print a synopsis of standard options
  -Akey[=value]              Options to pass to annotation processors
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system
  -Werror                    Terminate compilation if warnings occur
  @<filename>                Read options and filenames from file

echo $PATH也可以看到:

root@localhost bin]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/bin:/usr/local/apache-maven-3.6.1/bin:/home/gameloft9/.local/bin:/home/gameloft9/bin:/usr/lib/jvm/java/bin:/usr/local/apache-maven-3.6.1/bin
[root@localhost bin]# 

然后我们再运行创建topic的命令:

[gameloft9@localhost bin]$ ./mqadmin updateTopic -n 192.168.77.129:9876 -c DefaultCluster -t test
OpenJDK 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
create topic to 192.168.77.129:10911 success.

可以看到成功了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值