栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

dubbo消费者调用多个服务(dubbo服务调用过程)

dubbo消费者调用多个服务(dubbo服务调用过程)


dubbo 服务调用说明

       

               

                                   

导入依赖

            

        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        

        
        
            com.alibaba.cloud
            spring-cloud-starter-dubbo
        

               

                 

                                   

自动配置类

    

spring-cloud-starter-dubbo/spring.factories

         

# 自动配置类
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
 *元数据自动配置类
com.alibaba.cloud.dubbo.autoconfigure.DubbometadataAutoConfiguration,
 *服务调用自动配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboOpenFeignAutoConfiguration,
 *服务注册自动配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboServiceRegistrationAutoConfiguration,
 *非web应用自动注册配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboServiceRegistrationNonWebApplicationAutoConfiguration,
 *负载均衡调用自动配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboLoadBalancedRestTemplateAutoConfiguration,
 *dubbo服务自动配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboServiceAutoConfiguration,
 *服务发现自动配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboServiceDiscoveryAutoConfiguration


org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration=
com.alibaba.cloud.dubbo.actuate.DubbometadataEndpointAutoConfiguration

org.springframework.context.ApplicationContextInitializer=
com.alibaba.cloud.dubbo.context.DubboServiceRegistrationApplicationContextInitializer

org.springframework.boot.env.EnvironmentPostProcessor=
com.alibaba.cloud.dubbo.env.DubboNonWebApplicationEnvironmentPostProcessor

             

dubbo-spring-boot-autoconfigure-compatible/spring.factories

         

# 自动配置类
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
org.apache.dubbo.spring.boot.autoconfigure.DubboAutoConfiguration,
org.apache.dubbo.spring.boot.autoconfigure.DubboRelaxedBindingAutoConfiguration

org.springframework.context.ApplicationListener=
org.apache.dubbo.spring.boot.context.event.OverrideDubboConfigApplicationListener,
org.apache.dubbo.spring.boot.context.event.DubboConfigBeanDefinitionConflictApplicationListener,
org.apache.dubbo.spring.boot.context.event.WelcomeLogoApplicationListener,
org.apache.dubbo.spring.boot.context.event.AwaitingNonWebApplicationListener

org.springframework.boot.env.EnvironmentPostProcessor=
org.apache.dubbo.spring.boot.env.DubboDefaultPropertiesEnvironmentPostProcessor
org.springframework.context.ApplicationContextInitializer=
org.apache.dubbo.spring.boot.context.DubboApplicationContextInitializer

           

DubboAutoConfiguration

@ConditionalOnProperty(
    prefix = "dubbo",
    name = {"enabled"},
    matchIfMissing = true
)
@Configuration
@AutoConfigureAfter({DubboRelaxedBindingAutoConfiguration.class})
@EnableConfigurationProperties({DubboConfigurationProperties.class})  
                              //自动配置类DubboConfigurationProperties
@EnableDubboConfig
public class DubboAutoConfiguration implements ApplicationContextAware, BeanDefinitionRegistryPostProcessor {
    public DubboAutoConfiguration() {
    }

    @ConditionalOnProperty(
        prefix = "dubbo.scan.",
        name = {"base-packages"}
    )
    @ConditionalOnBean(
        name = {"dubbo-service-class-base-packages"}
    )
    @Bean
    public ServiceClassPostProcessor serviceClassPostProcessor(@Qualifier("dubbo-service-class-base-packages") Set packagesToScan) {
        return new ServiceClassPostProcessor(packagesToScan);
    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if (applicationContext instanceof ConfigurableApplicationContext) {
            ConfigurableApplicationContext context = (ConfigurableApplicationContext)applicationContext;
            DubboLifecycleComponentApplicationListener dubboLifecycleComponentApplicationListener = new DubboLifecycleComponentApplicationListener();
            dubboLifecycleComponentApplicationListener.setApplicationContext(applicationContext);
            context.addApplicationListener(dubboLifecycleComponentApplicationListener);
            DubboBootstrapApplicationListener dubboBootstrapApplicationListener = new DubboBootstrapApplicationListener();
            dubboBootstrapApplicationListener.setApplicationContext(applicationContext);
            context.addApplicationListener(dubboBootstrapApplicationListener);
        }

    }

    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
        this.removeBeanDefinition(registry, "dubboLifecycleComponentApplicationListener");
        this.removeBeanDefinition(registry, "dubboBootstrapApplicationListener");
    }

    private void removeBeanDefinition(BeanDefinitionRegistry registry, String beanName) {
        if (registry.containsBeanDefinition(beanName)) {
            registry.removeBeanDefinition(beanName);
        }

    }

    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
    }
}

            

DubboConfigurationProperties

@ConfigurationProperties("dubbo")
public class DubboConfigurationProperties {
    @NestedConfigurationProperty
    private DubboConfigurationProperties.Config config = new DubboConfigurationProperties.Config();
    @NestedConfigurationProperty
    private DubboConfigurationProperties.Scan scan = new DubboConfigurationProperties.Scan();
    @NestedConfigurationProperty
    private ApplicationConfig application = new ApplicationConfig();  //应用配置
    @NestedConfigurationProperty
    private ModuleConfig module = new ModuleConfig();        //模块配置
    @NestedConfigurationProperty
    private RegistryConfig registry = new RegistryConfig();  //注册中心配置
    @NestedConfigurationProperty
    private ProtocolConfig protocol = new ProtocolConfig();  //protocol协议配置
    @NestedConfigurationProperty
    private MonitorConfig monitor = new MonitorConfig();     //监控中心配置
    @NestedConfigurationProperty
    private ProviderConfig provider = new ProviderConfig();  //provider配置
    @NestedConfigurationProperty
    private ConsumerConfig consumer = new ConsumerConfig();  //consumer配置
    @NestedConfigurationProperty
    private ConfigCenterBean configCenter = new ConfigCenterBean();  //配置中心配置
    @NestedConfigurationProperty
    private metadataReportConfig metadataReport = new metadataReportConfig();  //元数据中心配置

    private Map modules = new linkedHashMap();
    private Map registries = new linkedHashMap();
    private Map protocols = new linkedHashMap();
    private Map monitors = new linkedHashMap();
    private Map providers = new linkedHashMap();
    private Map consumers = new linkedHashMap();
    private Map configCenters = new linkedHashMap();
    private Map metadataReports = new linkedHashMap();

    public DubboConfigurationProperties() {
    }

           

ApplicationConfig

public class ApplicationConfig extends AbstractConfig {
    private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationConfig.class);
    private static final long serialVersionUID = 5508512956753757169L;
    private String name;
    private String version;
    private String owner;
    private String organization;
    private String architecture;
    private String environment;
    private String compiler;
    private String logger;
    private List registries;
    private String registryIds;
    private MonitorConfig monitor;
    private Boolean isDefault;
    private String dumpDirectory;
    private Boolean qosEnable;
    private String qosHost;
    private Integer qosPort;
    private Boolean qosAcceptForeignIp;
    private Map parameters;
    private String shutwait;
    private String hostname;
    private String metadataType;
    private Boolean registerConsumer;
    private String repository;

    public ApplicationConfig() {
    }

          

ModuleConfig

public class ModuleConfig extends AbstractConfig {
    private static final long serialVersionUID = 5508512956753757169L;
    private String name;
    private String version;
    private String owner;
    private String organization;
    private List registries;
    private MonitorConfig monitor;
    private Boolean isDefault;

    public ModuleConfig() {
    }

         

RegistryConfig

public class RegistryConfig extends AbstractConfig {
    public static final String NO_AVAILABLE = "N/A";
    private static final long serialVersionUID = 5508512956753757169L;
    private String address;
    private String username;
    private String password;
    private Integer port;
    private String protocol;
    private String transporter;
    private String server;
    private String client;
    private String cluster;
    private String zone;
    private String group;
    private String version;
    private Integer timeout;
    private Integer session;
    private String file;
    private Integer wait;
    private Boolean check;
    private Boolean dynamic;
    private Boolean register;
    private Boolean subscribe;
    private Map parameters;
    private Boolean isDefault;
    private Boolean simplified;
    private String extraKeys;
    private Boolean useAsConfigCenter;
    private Boolean useAsmetadataCenter;
    private String accepts;
    private Boolean preferred;
    private Integer weight;

    public RegistryConfig() {
    }

              

ProviderConfig

public class ProviderConfig extends AbstractServiceConfig {
    private static final long serialVersionUID = 6913423882496634749L;
    private String host;
    private Integer port;
    private String contextpath;
    private String threadpool;
    private String threadname;
    private Integer threads;
    private Integer iothreads;
    private Integer queues;
    private Integer accepts;
    private String codec;
    private String charset;
    private Integer payload;
    private Integer buffer;
    private String transporter;
    private String exchanger;
    private String dispatcher;
    private String networker;
    private String server;
    private String client;
    private String telnet;
    private String prompt;
    private String status;
    private Integer wait;
    private Boolean isDefault;

    public ProviderConfig() {
    }

         

ConsumerConfig

public class ConsumerConfig extends AbstractReferenceConfig {
    private static final long serialVersionUID = 2827274711143680600L;
    private Boolean isDefault;
    private String client;
    private String threadpool;
    private Integer corethreads;
    private Integer threads;
    private Integer queues;
    private Integer shareconnections;

    public ConsumerConfig() {
    }

         

ProtocolConfig

public class ProtocolConfig extends AbstractConfig {
    private static final long serialVersionUID = 6913423882496634749L;
    private String name;
    private String host;
    private Integer port;
    private String contextpath;
    private String threadpool;
    private String threadname;
    private Integer corethreads;
    private Integer threads;
    private Integer iothreads;
    private Integer queues;
    private Integer accepts;
    private String codec;
    private String serialization;
    private String charset;
    private Integer payload;
    private Integer buffer;
    private Integer heartbeat;
    private String accesslog;
    private String transporter;
    private String exchanger;
    private String dispatcher;
    private String networker;
    private String server;
    private String client;
    private String telnet;
    private String prompt;
    private String status;
    private Boolean register;
    private Boolean keepAlive;
    private String optimizer;
    private String extension;
    private Map parameters;
    private Boolean isDefault;
    private Boolean sslEnabled;

    public ProtocolConfig() {
    }

      

MonitorConfig

public class MonitorConfig extends AbstractConfig {
    private static final long serialVersionUID = -1184681514659198203L;
    private String protocol;
    private String address;
    private String username;
    private String password;
    private String group;
    private String version;
    private String interval;
    private Map parameters;
    private Boolean isDefault;

    public MonitorConfig() {
    }

          

ConfigCenterBean

public class ConfigCenterBean extends ConfigCenterConfig implements ApplicationContextAware, DisposableBean, EnvironmentAware {
    private transient ApplicationContext applicationContext;
    private Boolean includeSpringEnv = false;

    public ConfigCenterBean() {
    }

           

ConfigCenterConfig

public class ConfigCenterConfig extends AbstractConfig {
    private AtomicBoolean inited = new AtomicBoolean(false);
    private String protocol;
    private String address;
    private Integer port;
    private String cluster;
    private String namespace = "dubbo";
    private String group = "dubbo";
    private String username;
    private String password;
    private Long timeout = 3000L;
    private Boolean highestPriority = true;
    private Boolean check = true;
    private String configFile = "dubbo.properties";
    private String appConfigFile;
    private Map parameters;
    private Map externalConfiguration;
    private Map appExternalConfiguration;

    public ConfigCenterConfig() {
    }

                

metadataReportConfig

public class metadataReportConfig extends AbstractConfig {
    private static final long serialVersionUID = 55233L;
    private static final String PREFIX_TAG = StringUtils.camelToSplitName(metadataReportConfig.class.getSimpleName().substring(0, metadataReportConfig.class.getSimpleName().length() - 6), "-");
    private String address;
    private String username;
    private String password;
    private Integer timeout;
    private String group;
    private Map parameters;
    private Integer retryTimes;
    private Integer retryPeriod;
    private Boolean cycleReport;
    private Boolean syncReport;
    private Boolean cluster;

    public metadataReportConfig() {
    }

              

          

                                   

相关注解

  

@EnableDubbo:开启dubbo服务暴露与注入

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@documented
@EnableDubboConfig
@DubboComponentScan
public @interface EnableDubbo {
    @AliasFor(
        annotation = DubboComponentScan.class,
        attribute = "basePackages"
    )
    String[] scanbasePackages() default {};

    @AliasFor(
        annotation = DubboComponentScan.class,
        attribute = "basePackageClasses"
    )
    Class[] scanbasePackageClasses() default {};

    @AliasFor(
        annotation = EnableDubboConfig.class,
        attribute = "multiple"
    )
    boolean multipleConfig() default true;
}

   

@DubboService:服务暴露

@documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Inherited
public @interface DubboService {
    Class interfaceClass() default void.class;

    String interfaceName() default "";

    String version() default "";

    String group() default "";

    String path() default "";

    boolean export() default true;

    String token() default "";

    boolean deprecated() default false;

    boolean dynamic() default true;

    String accesslog() default "";

    int executes() default 0;

    boolean register() default true;

    int weight() default 0;

    String document() default "";

    int delay() default 0;

    
    String local() default "";

    String stub() default "";

    String cluster() default "";

    String proxy() default "";

    int connections() default 0;

    int callbacks() default 1;

    String onconnect() default "";

    String ondisconnect() default "";

    String owner() default "";

    String layer() default "";

    int retries() default 2;

    String loadbalance() default "random";

    boolean async() default false;

    int actives() default 0;

    boolean sent() default false;

    String mock() default "";

    String validation() default "";

    int timeout() default 0;

    String cache() default "";

    String[] filter() default {};

    String[] listener() default {};

    String[] parameters() default {};

    String application() default "";

    String module() default "";

    String provider() default "";

    String[] protocol() default {};

    String monitor() default "";

    String[] registry() default {};

    String tag() default "";

    Method[] methods() default {};
}

          

@DubboReference:服务引用

@documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
public @interface DubboReference {
    Class interfaceClass() default void.class;

    String interfaceName() default "";

    String version() default "";

    String group() default "";

    String url() default "";

    String client() default "";

    boolean generic() default false;

    boolean injvm() default true;

    boolean check() default true;

    boolean init() default false;

    boolean lazy() default false;

    boolean stubevent() default false;

    String reconnect() default "";

    boolean sticky() default false;

    String proxy() default "";

    String stub() default "";

    String cluster() default "";

    int connections() default 0;

    int callbacks() default 0;

    String onconnect() default "";

    String ondisconnect() default "";

    String owner() default "";

    String layer() default "";

    int retries() default 2;

    String loadbalance() default "";

    boolean async() default false;

    int actives() default 0;

    boolean sent() default false;

    String mock() default "";

    String validation() default "";

    int timeout() default 0;

    String cache() default "";

    String[] filter() default {};

    String[] listener() default {};

    String[] parameters() default {};

    String application() default "";

    String module() default "";

    String consumer() default "";

    String monitor() default "";

    String[] registry() default {};

    String protocol() default "";

    String tag() default "";

    String merger() default "";

    Method[] methods() default {};

    String id() default "";

    String[] services() default {};
}

       

@Method:方法级别注解

@documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE})
@Inherited
public @interface Method {
    String name();

    int timeout() default -1;

    int retries() default -1;

    String loadbalance() default "";

    boolean async() default false;

    boolean sent() default true;

    int actives() default 0;

    int executes() default 0;

    boolean deprecated() default false;

    boolean sticky() default false;

    boolean isReturn() default true;

    String oninvoke() default "";

    String onreturn() default "";

    String onthrow() default "";

    String cache() default "";

    String validation() default "";

    String merger() default "";

    Argument[] arguments() default {};
}

          

          

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/771898.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号