You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@rocketmq.apache.org by GitBox <gi...@apache.org> on 2019/05/07 03:29:41 UTC

[GitHub] [rocketmq] FansinZhao commented on issue #403: ACL feature request

FansinZhao commented on issue #403: ACL feature request
URL: https://github.com/apache/rocketmq/issues/403#issuecomment-489893747
 
 
   > @dongeforever 你好! 提个问题:
   > 我在开启ACL后,使用如下方式发送消息:
   > SessionCredentials sc = new SessionCredentials("accessKey", "secretKey");
   > RPCHook hook = new AclClientRPCHook(sc);
   > DefaultMQProducer producer = new DefaultMQProducer("producer_group", hook);
   > 结果会出现这样的异常:
   > org.apache.rocketmq.client.exception.MQClientException: Send [3] times, still failed, cost [864]ms, Topic: test_filter, BrokersSent: [broker-a, broker-b, broker-a]
   > See http://rocketmq.apache.org/docs/faq/ for further details.
   > at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:632)
   > at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1279)
   > at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1225)
   > at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:283)
   > at test_rockemq.TestFilter.produce(TestFilter.java:39)
   > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   > at java.lang.reflect.Method.invoke(Unknown Source)
   > at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
   > at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
   > at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
   > at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
   > at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
   > at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
   > at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
   > at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
   > at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
   > at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
   > at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
   > at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
   > at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
   > at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
   > at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
   > at org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:39)
   > at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
   > at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
   > at java.util.Iterator.forEachRemaining(Unknown Source)
   > at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
   > at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
   > at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
   > at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
   > at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
   > at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
   > at java.util.stream.ReferencePipeline.forEach(Unknown Source)
   > at org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:79)
   > at org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:70)
   > at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
   > at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
   > at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
   > at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:86)
   > at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
   > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
   > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
   > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
   > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
   > Caused by: org.apache.rocketmq.client.exception.MQBrokerException: CODE: 1 DESC: 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, org.apache.rocketmq.acl.common.AclSigner.signAndBase64Encode(AclSigner.java:84)
   > For more information, please visit the url, http://rocketmq.apache.org/docs/faq/
   > at org.apache.rocketmq.client.impl.MQClientAPIImpl.processSendResponse(MQClientAPIImpl.java:556)
   > at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessageSync(MQClientAPIImpl.java:358)
   > at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:340)
   > at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:294)
   > at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendKernelImpl(DefaultMQProducerImpl.java:807)
   > at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:551)
   > ... 45 more
   > 
   > 请问是Algorithm HmacSHA1不可用的原因是什么?
   > PS: rocketmq的版本是4.4.0
   
   我解决了这个问题,问题在于Algorithm HmacSHA1这个算法是在${JAVA_HOME}/jre/lib/ext文件夹下的sunjce_provider.jar,所以需要将此目录增加到CLASSPATH中,注意如果启动脚本使用`-Djava.ext.dirs`,这个参数会将默认的ext覆盖掉,如果使用这个参数,注意将${JAVA_HOME}/jre/lib/ext追加到后面。

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services