gradle搭载(注解)dubbo下的生产者和消费者调用流程

1、启动zk

2、启动Provider

Provider在启动的时候会调用SimpleInstantiationStrategy.instantiate(),然后循环遍历所有被@@Bean注释的方法

1、启动Provider的时候,首先调用demoXml.annotationBean()用来获取当前实现接口的类所在的包。

@Bean
    public static AnnotationBean annotationBean() {
        AnnotationBean annotationBean = new AnnotationBean();
        annotationBean.setPackage("impl");
        return annotationBean;
    }

2、调用demoXml.applicationConfig()获取当前项目名

@Bean
    public ApplicationConfig applicationConfig() {
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("dubbo-provider");
        return applicationConfig;
    }

3、调用demoXml.registryConfig()获取当前暴露的链接,以及链接名

@Bean
    public RegistryConfig registryConfig() {
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setAddress("zookeeper://127.0.0.1:2181");
        registryConfig.setProtocol("zookeeper");
        return registryConfig;
    }

4、调用demoXml.protocolConfig()获取当前暴露的端口号

@Bean
    public ProtocolConfig protocolConfig() {
        ProtocolConfig protocolConfig = new ProtocolConfig();
        protocolConfig.setName("dubbo");
        protocolConfig.setPort(20880);
        return protocolConfig;
    }

5、调用demoXml.getDemoService()获取实现类的对象

 @Bean
    public DemoService getDemoService(){
        DemoService service = new DemoServiceImpl();
        return service;
    }

6、调用demoXml.providerConfig()将参数打包返回

@Bean(name="myProvider")
    public ProviderConfig providerConfig(ApplicationConfig applicationConfig, RegistryConfig registryConfig, ProtocolConfig protocolConfig) {
        ProviderConfig providerConfig = new ProviderConfig();
        providerConfig.setApplication(applicationConfig);
        providerConfig.setRegistry(registryConfig);
        providerConfig.setProtocol(protocolConfig);
        return providerConfig;
    }

7、调用demoXml.commandLineRunner遍历所有@bean的名称

@Bean
    public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
        return args -> {
            System.out.println("Let's inspect the beans provided by Spring Boot:");
            String[] beanNames = ctx.getBeanDefinitionNames();
            Arrays.sort(beanNames);
            for (String beanName : beanNames) {
                System.out.println(beanName);
            }

        };
    }

3、启动Consumer

1、启动Consumer的时候,首先调用demoXml.annotationBean()用来获取当前实现接口的类所在的包。

@Bean
    public static AnnotationBean annotationBean() {
        AnnotationBean annotationBean = new AnnotationBean();
        annotationBean.setPackage("test");
        return annotationBean;
    }

2、consumerConfig()

 @Bean
    public ConsumerConfig consumerConfig() {
        ConsumerConfig consumerConfig = new ConsumerConfig();
        consumerConfig.setTimeout(3000);
        return consumerConfig;
    }

3、applicationConfig()

@Bean
    public ApplicationConfig applicationConfig() {
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("dubbo-consumer");
        return applicationConfig;
    }

4、registryConfig()

@Bean
    public RegistryConfig registryConfig() {
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setAddress("zookeeper://127.0.0.1:2181");
        registryConfig.setClient("zookeeper");
        return registryConfig;
    }

5、连接到zk上,获取暴露在上面的值

@Reference(version="1.0.0")
DemoService demoService;

6、commandLineRunner()

@Bean
    public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
        return args -> {
            System.out.println("Let's inspect the beans consumer by Spring Boot:");
            String[] beanNames = ctx.getBeanDefinitionNames();
            Arrays.sort(beanNames);
            for (String beanName : beanNames) {
                System.out.println(beanName);
            }
        };
    }

4、导入dubbo的jar

dependencies {
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '1.5.12.RELEASE'
    compile group: 'com.alibaba', name: 'dubbo', version: '2.5.9'
    compile group: 'com.101tec', name: 'zkclient', version: '0.10'
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile project(':library')
}

在compile group: ‘com.alibaba’, name: ‘dubbo’, version: '2.5.9’此行中,导入的jar包版本要低于2.6.1,否则会出现java.lang.NoClassDefFoundError: org/apache/curator/framework/CuratorFrameworkFactory这个异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值