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]

Reply via email to