woody 1 年間 前
コミット
047d8a75b0

+ 2 - 1
framework-oauth/src/main/java/com/chelvc/framework/oauth/context/OauthContextHolder.java

@@ -318,7 +318,8 @@ public class OauthContextHolder implements ServletRequestListener {
      * @return 应用范围
      */
     public static String getScope(Jwt jwt) {
-        return jwt == null ? null : StringUtils.ifEmpty(jwt.getClaimAsString(JWT_CLAIM_SCOPE), (String) null);
+        List<String> scopes = jwt == null ? null : jwt.getClaimAsStringList(JWT_CLAIM_SCOPE);
+        return StringUtils.ifEmpty(ObjectUtils.isEmpty(scopes) ? null : scopes.get(0), (String) null);
     }
 
     /**

+ 4 - 5
framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/config/RocketMQConfigurer.java

@@ -3,7 +3,6 @@ package com.chelvc.framework.rocketmq.config;
 import java.util.Objects;
 import java.util.concurrent.atomic.AtomicLong;
 
-import lombok.RequiredArgsConstructor;
 import com.chelvc.framework.rocketmq.annotation.RocketMQConsumer;
 import com.chelvc.framework.rocketmq.consumer.MultipleRocketMQListenerContainer;
 import com.chelvc.framework.rocketmq.consumer.RocketMQListenerContainer;
@@ -11,11 +10,11 @@ import com.chelvc.framework.rocketmq.consumer.SingleRocketMQListenerContainer;
 import com.chelvc.framework.rocketmq.interceptor.RocketMQListener;
 import com.chelvc.framework.rocketmq.producer.DefaultRocketMQProducerFactory;
 import com.chelvc.framework.rocketmq.producer.RocketMQProducerFactory;
+import lombok.RequiredArgsConstructor;
 import org.apache.rocketmq.client.apis.ClientConfiguration;
 import org.apache.rocketmq.client.apis.ClientServiceProvider;
 import org.apache.rocketmq.client.apis.SessionCredentialsProvider;
 import org.apache.rocketmq.client.apis.StaticSessionCredentialsProvider;
-import org.apache.rocketmq.client.apis.producer.ProducerBuilder;
 import org.springframework.aop.framework.AopProxyUtils;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -52,8 +51,7 @@ public class RocketMQConfigurer implements ApplicationContextAware {
 
     @Bean
     public RocketMQProducerFactory producerFactory() {
-        ProducerBuilder builder = this.provider().newProducerBuilder().setClientConfiguration(this.configuration());
-        return new DefaultRocketMQProducerFactory(builder);
+        return new DefaultRocketMQProducerFactory(this.provider(), this.configuration());
     }
 
     /**
@@ -76,13 +74,14 @@ public class RocketMQConfigurer implements ApplicationContextAware {
             return multiple ? new MultipleRocketMQListenerContainer<>() : new SingleRocketMQListenerContainer<>();
         });
         RocketMQListenerContainer<T> container = applicationContext.getBean(name, RocketMQListenerContainer.class);
-        container.initialize(applicationContext, this.provider(), this.configuration(), listener, annotation,
+        container.initialize(this.provider(), this.configuration(), applicationContext, listener, annotation,
                 this.properties);
     }
 
     @Override
     @SuppressWarnings("unchecked")
     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        // 注册消息监听器
         applicationContext.getBeansOfType(RocketMQListener.class).values()
                 .forEach(listener -> this.registerListenerContainer(applicationContext, listener));
     }

+ 4 - 4
framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/consumer/MultipleRocketMQListenerContainer.java

@@ -6,8 +6,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import lombok.NonNull;
-import lombok.extern.slf4j.Slf4j;
 import com.chelvc.framework.common.util.AssertUtils;
 import com.chelvc.framework.common.util.ObjectUtils;
 import com.chelvc.framework.common.util.StringUtils;
@@ -16,6 +14,8 @@ import com.chelvc.framework.rocketmq.annotation.RocketMQConsumer;
 import com.chelvc.framework.rocketmq.config.RocketMQProperties;
 import com.chelvc.framework.rocketmq.context.RocketMQContextHolder;
 import com.chelvc.framework.rocketmq.interceptor.RocketMQListener;
+import lombok.NonNull;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.client.apis.ClientConfiguration;
 import org.apache.rocketmq.client.apis.ClientException;
 import org.apache.rocketmq.client.apis.ClientServiceProvider;
@@ -153,8 +153,8 @@ public class MultipleRocketMQListenerContainer<T> implements RocketMQListenerCon
     }
 
     @Override
-    public void initialize(@NonNull ApplicationContext applicationContext, @NonNull ClientServiceProvider provider,
-                           @NonNull ClientConfiguration configuration, @NonNull RocketMQListener<T> listener,
+    public void initialize(@NonNull ClientServiceProvider provider, @NonNull ClientConfiguration configuration,
+                           @NonNull ApplicationContext applicationContext, @NonNull RocketMQListener<T> listener,
                            @NonNull RocketMQConsumer annotation, @NonNull RocketMQProperties properties) {
         // 参数配置有效性校验
         Class<?> clazz = AopProxyUtils.ultimateTargetClass(listener);

+ 3 - 3
framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/consumer/RocketMQListenerContainer.java

@@ -19,14 +19,14 @@ public interface RocketMQListenerContainer<T> extends DisposableBean {
     /**
      * 容器初始化
      *
-     * @param applicationContext 应用上下文实例
      * @param provider           客户端服务生产者实例
      * @param configuration      客户端配置实例
+     * @param applicationContext 应用上下文实例
      * @param listener           消息监听器实例
      * @param annotation         消息消费者注解实例
      * @param properties         消息配置属性
      */
-    void initialize(ApplicationContext applicationContext, ClientServiceProvider provider,
-                    ClientConfiguration configuration, RocketMQListener<T> listener, RocketMQConsumer annotation,
+    void initialize(ClientServiceProvider provider, ClientConfiguration configuration,
+                    ApplicationContext applicationContext, RocketMQListener<T> listener, RocketMQConsumer annotation,
                     RocketMQProperties properties);
 }

+ 4 - 4
framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/consumer/SingleRocketMQListenerContainer.java

@@ -3,8 +3,6 @@ package com.chelvc.framework.rocketmq.consumer;
 import java.lang.reflect.Type;
 import java.util.Collections;
 
-import lombok.NonNull;
-import lombok.extern.slf4j.Slf4j;
 import com.chelvc.framework.common.util.AssertUtils;
 import com.chelvc.framework.common.util.ObjectUtils;
 import com.chelvc.framework.common.util.StringUtils;
@@ -12,6 +10,8 @@ import com.chelvc.framework.rocketmq.annotation.RocketMQConsumer;
 import com.chelvc.framework.rocketmq.config.RocketMQProperties;
 import com.chelvc.framework.rocketmq.context.RocketMQContextHolder;
 import com.chelvc.framework.rocketmq.interceptor.RocketMQListener;
+import lombok.NonNull;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.rocketmq.client.apis.ClientConfiguration;
 import org.apache.rocketmq.client.apis.ClientException;
@@ -87,8 +87,8 @@ public class SingleRocketMQListenerContainer<T> implements RocketMQListenerConta
     }
 
     @Override
-    public void initialize(@NonNull ApplicationContext applicationContext, @NonNull ClientServiceProvider provider,
-                           @NonNull ClientConfiguration configuration, @NonNull RocketMQListener<T> listener,
+    public void initialize(@NonNull ClientServiceProvider provider, @NonNull ClientConfiguration configuration,
+                           @NonNull ApplicationContext applicationContext, @NonNull RocketMQListener<T> listener,
                            @NonNull RocketMQConsumer annotation, @NonNull RocketMQProperties properties) {
         // 参数配置有效性校验
         Class<?> clazz = AopProxyUtils.ultimateTargetClass(listener);

+ 2 - 2
framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/context/RocketMQContextHolder.java

@@ -8,8 +8,6 @@ import java.util.Objects;
 import java.util.function.Consumer;
 import java.util.function.Function;
 
-import lombok.NonNull;
-import lombok.extern.slf4j.Slf4j;
 import com.chelvc.framework.base.context.ApplicationContextHolder;
 import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.model.Session;
@@ -20,6 +18,8 @@ import com.chelvc.framework.common.util.ObjectUtils;
 import com.chelvc.framework.common.util.StringUtils;
 import com.chelvc.framework.rocketmq.config.RocketMQProperties;
 import com.chelvc.framework.rocketmq.producer.RocketMQProducerFactory;
+import lombok.NonNull;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.rocketmq.client.apis.ClientException;
 import org.apache.rocketmq.client.apis.ClientServiceProvider;

+ 9 - 4
framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/producer/DefaultRocketMQProducerFactory.java

@@ -5,7 +5,9 @@ import java.util.Map;
 import com.google.common.collect.Maps;
 import lombok.NonNull;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.rocketmq.client.apis.ClientConfiguration;
 import org.apache.rocketmq.client.apis.ClientException;
+import org.apache.rocketmq.client.apis.ClientServiceProvider;
 import org.apache.rocketmq.client.apis.producer.Producer;
 import org.apache.rocketmq.client.apis.producer.ProducerBuilder;
 import org.apache.rocketmq.client.apis.producer.TransactionChecker;
@@ -18,12 +20,14 @@ import org.apache.rocketmq.client.apis.producer.TransactionChecker;
  */
 @Slf4j
 public class DefaultRocketMQProducerFactory implements RocketMQProducerFactory {
-    private final ProducerBuilder builder;
+    private final ClientServiceProvider provider;
+    private final ClientConfiguration configuration;
     private final Map<String, Producer> producers = Maps.newHashMap();
     private final Map<String, Producer> transactionProducers = Maps.newHashMap();
 
-    public DefaultRocketMQProducerFactory(ProducerBuilder builder) {
-        this.builder = builder;
+    public DefaultRocketMQProducerFactory(ClientServiceProvider provider, ClientConfiguration configuration) {
+        this.provider = provider;
+        this.configuration = configuration;
     }
 
     /**
@@ -34,7 +38,8 @@ public class DefaultRocketMQProducerFactory implements RocketMQProducerFactory {
      * @return 消息生产者实例
      */
     private Producer initializeProducer(String topic, TransactionChecker checker) {
-        ProducerBuilder builder = this.builder.setTopics(topic);
+        ProducerBuilder builder = this.provider.newProducerBuilder().setClientConfiguration(this.configuration)
+                .setTopics(topic);
         if (checker != null) {
             builder.setTransactionChecker(checker);
         }