huangdeyao commented on PR #6885: URL: https://github.com/apache/rocketmq/pull/6885#issuecomment-1611512653
我测试了一下5.1.3源码,启动proxy代理模式,还是有问题,帮忙看一下,是不是我的测试方法有问题 错误信息 ```shell org.apache.rocketmq.client.exception.MQBrokerException: CODE: 1 DESC: org.apache.rocketmq.acl.common.AclException: No accessKey is configured, org.apache.rocketmq.acl.plain.PlainPermissionManager.validate(PlainPermissionManager.java:609) For more information, please visit the url, https://rocketmq.apache.org/docs/bestPractice/06FAQ ``` 错误位置: ClusterMetadataService.class ```java @Override public TopicMessageType getTopicMessageType(ProxyContext ctx, String topic) { TopicConfigAndQueueMapping topicConfigAndQueueMapping; try { // 错误点 topicConfigAndQueueMapping = topicConfigCache.get(topic); } catch (Exception e) { return TopicMessageType.UNSPECIFIED; } if (topicConfigAndQueueMapping.equals(EMPTY_TOPIC_CONFIG)) { return TopicMessageType.UNSPECIFIED; } return topicConfigAndQueueMapping.getTopicMessageType(); } ``` 配置文件 ```yml accounts: - accessKey: RocketMQ admin: false defaultGroupPerm: SUB defaultTopicPerm: DENY groupPerms: - groupA=DENY - groupB=SUB - groupC=SUB secretKey: '12345678' topicPerms: - topicA=DENY - topicB=PUB|SUB - topicC=SUB whiteRemoteAddress: null - accessKey: rocketmq2 admin: true defaultGroupPerm: null defaultTopicPerm: null groupPerms: null secretKey: '12345678' topicPerms: null whiteRemoteAddress: null dataVersion: - counter: 20 timestamp: 1687940234091 globalWhiteRemoteAddresses: ``` 源码版本: rocketmq-rocketmq-all-5.1.3 测试代码 : ```java public class RocketMQProxyTest { public static void main(String[] args) throws Exception { final ClientServiceProvider provider = ClientServiceProvider.loadService(); // Credential provider is optional for client configuration. String accessKey = "rocketmq2"; String secretKey = "12345678"; SessionCredentialsProvider sessionCredentialsProvider = new StaticSessionCredentialsProvider(accessKey, secretKey); String endpoints = "127.0.0.1:28080"; ClientConfiguration clientConfiguration = ClientConfiguration.newBuilder() .setEndpoints(endpoints) .setCredentialProvider(sessionCredentialsProvider) .setRequestTimeout(Duration.ofSeconds(30)) .build(); String topic = "TopicTest"; final Producer producer = provider.newProducerBuilder() .setClientConfiguration(clientConfiguration) .setTopics(topic) .build(); byte[] body = "This is a normal message for Apache RocketMQ".getBytes(StandardCharsets.UTF_8); String tag = "yourMessageTagA"; // accept_message_types: MESSAGE_TYPE_UNSPECIFIED final Message message = provider.newMessageBuilder() .setTopic(topic) .setTag(tag) .setKeys("1") .setBody(body) .build(); final CompletableFuture<SendReceipt> future = producer.sendAsync(message); future.whenComplete((sendReceipt, throwable) -> { if (null == throwable) { System.out.println("Send message successfully, messageId=" + sendReceipt.getMessageId()); } else { System.out.println("Failed to send message"); } }); // Block to avoid exist of background threads. Thread.sleep(Long.MAX_VALUE); // Close the producer when you don't need it anymore. producer.close(); } } ``` pom ```xml <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client-java</artifactId> <version>5.0.5</version> </dependency> ``` 错误返回信息 ```shell at org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractService.checkCurrentState(AbstractService.java:381) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractService.awaitRunning(AbstractService.java:305) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractIdleService.awaitRunning(AbstractIdleService.java:165) at org.apache.rocketmq.client.java.impl.producer.ProducerBuilderImpl.build(ProducerBuilderImpl.java:93) at com.example.rocketmq.test.RocketMQProxyTest.main(RocketMQProxyTest.java:38) Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Message type is not specified at org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:588) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:567) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.FluentFuture$TrustedFuture.get(FluentFuture.java:91) at org.apache.rocketmq.client.java.impl.ClientImpl.startUp(ClientImpl.java:188) at org.apache.rocketmq.client.java.impl.producer.ProducerImpl.startUp(ProducerImpl.java:114) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractIdleService$DelegateService$1.run(AbstractIdleService.java:62) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.Callables.lambda$threadRenaming$3(Callables.java:103) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.IllegalArgumentException: Message type is not specified at org.apache.rocketmq.client.java.message.MessageType.fromProtobuf(MessageType.java:38) at org.apache.rocketmq.client.java.route.MessageQueueImpl.<init>(MessageQueueImpl.java:43) at org.apache.rocketmq.client.java.route.TopicRouteData.<init>(TopicRouteData.java:48) at org.apache.rocketmq.client.java.impl.ClientImpl.lambda$fetchTopicRoute0$6(ClientImpl.java:620) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AbstractTransformFuture.java:221) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AbstractTransformFuture.java:208) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:122) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:31) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1270) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:1038) at org.apache.rocketmq.shaded.com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:783) at org.apache.rocketmq.shaded.io.grpc.stub.ClientCalls$GrpcFuture.set(ClientCalls.java:569) at org.apache.rocketmq.shaded.io.grpc.stub.ClientCalls$UnaryStreamToFuture.onClose(ClientCalls.java:542) at org.apache.rocketmq.shaded.io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39) at org.apache.rocketmq.shaded.io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23) at org.apache.rocketmq.shaded.io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40) at org.apache.rocketmq.shaded.io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:563) at org.apache.rocketmq.shaded.io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:70) at org.apache.rocketmq.shaded.io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:744) at org.apache.rocketmq.shaded.io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:723) at org.apache.rocketmq.shaded.io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) at org.apache.rocketmq.shaded.io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ... 1 more ``` -- 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. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
