这里是我自己整理的一些资料,大家不懂的可以相互学习呀。。。

Dubbo + SpringBoot

JAVA ZZT 1600次浏览 已收录 0个评论

准备:

转载链接:https://www.cnblogs.com/geekdc/p/9267341.html

dubbo-spring-boot-starter的使用:

github地址:https://github.com/alibaba/dubbo-spring-boot-starter 最新版本为2.0 ,本文也是使用的该版本。

Dubbo配置清单:https://www.jianshu.com/p/60c79f48d4d6

开发:

提供者:

1、添加依赖:


<dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency>

** 2 启动类配置: **


package com.dc.sb.dubbo.provider; import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableDubboConfiguration public class SbDubboProviderApplication { public static void main(String[] args) { SpringApplication.run(SbDubboProviderApplication.class, args); } }

3 、配置文件:


server.port=8081 server.context-path=/ spring.application.name=dubbo-spring-boot-starter spring.dubbo.server=true spring.dubbo.registry=zookeeper://127.0.0.1:2181

配置类:

package com.ec.zztproject.config;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class DubboConfig {

    private Logger logger = LoggerFactory.getLogger(DubboConfig.class);

    @Value("${dubbo.application.name}")
    String name;

    @Value("${zookeeper.address}")
    String address;

    @Value("${dubbo.protocol.name}")
    String protocolName;

    @Value("${dubbo.protocol.port}")
    Integer protocolPort;

    @Value("${dubbo.protocol.timeout}")
    Integer protocolTimeout;

    @Bean
    public ApplicationConfig applicationConfig(){
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName(name);
        applicationConfig.setQosEnable(false);
        logger.info("applicationConfig:{}",applicationConfig.toString());
        return applicationConfig;
    }

    @Bean
    RegistryConfig registryConfig(){
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setClient("curator");
        registryConfig.setProtocol("zookeeper");
        registryConfig.setAddress(address);
        logger.info("registryConfig:{}",registryConfig.toString());
        return registryConfig;
    }

    @Bean
    ProtocolConfig protocolConfig(){
        ProtocolConfig protocolConfig = new ProtocolConfig();
        protocolConfig.setName(protocolName);
        protocolConfig.setPort(protocolPort);
        protocolConfig.setAccepts(protocolTimeout);
        logger.info("protocolConfig:{}",protocolConfig.toString());
        return  protocolConfig;
    }

}

** 4、接口实现类:**


package com.dc.sb.dubbo.provider.service.user; import com.alibaba.dubbo.config.annotation.Service; import com.dc.sb.service.RemoteUserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; /** * dubbo 服务service * * @author DUCHONG * @since 2018-07-03 18:29 **/ @Component @Service(version = "1.0.0",timeout = 10000,interfaceClass = RemoteUserService.class) public class RemoteUserServiceImpl implements RemoteUserService { private static final Logger logger = LoggerFactory.getLogger(RemoteUserServiceImpl.class); @Override public String sayHello(String name) { return "Hello "+name; } }

消费者:

1、添加依赖:


<dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency>

** 2、启动类配置:**

package com.dc.sb.web;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import com.dc.sb.config.DruidProperties;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@EnableConfigurationProperties({DruidProperties.class})
@MapperScan(basePackages = "com.dc.sb.dao")
@ComponentScan("com.dc.sb.*")
@EnableDubboConfiguration
public class SbWebApplication {

    public static void main(String[] args) {
        SpringApplication.run(SbWebApplication.class, args);
    }
}

3 、配置文件:


server.port=8081 server.context-path=/ spring.application.name=dubbo-spring-boot-starter spring.dubbo.server=true spring.dubbo.registry=zookeeper://127.0.0.1:2181

配置类:

package com.ec.zztproject.config;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class DubboConfig {

    private Logger logger = LoggerFactory.getLogger(DubboConfig.class);

    @Value("${dubbo.application.name}")
    String name;

    @Value("${zookeeper.address}")
    String address;

    @Value("${dubbo.protocol.name}")
    String protocolName;

    @Value("${dubbo.protocol.port}")
    Integer protocolPort;

    @Value("${dubbo.protocol.timeout}")
    Integer protocolTimeout;

    @Bean
    public ApplicationConfig applicationConfig(){
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName(name);
        applicationConfig.setQosEnable(false);
        logger.info("applicationConfig:{}",applicationConfig.toString());
        return applicationConfig;
    }

    @Bean
    RegistryConfig registryConfig(){
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setClient("curator");
        registryConfig.setProtocol("zookeeper");
        registryConfig.setAddress(address);
        logger.info("registryConfig:{}",registryConfig.toString());
        return registryConfig;
    }

    @Bean
    ProtocolConfig protocolConfig(){
        ProtocolConfig protocolConfig = new ProtocolConfig();
        protocolConfig.setName(protocolName);
        protocolConfig.setPort(protocolPort);
        protocolConfig.setAccepts(protocolTimeout);
        logger.info("protocolConfig:{}",protocolConfig.toString());
        return  protocolConfig;
    }

}

4、消费者模块:


package com.dc.sb.web.controller.remote; import com.alibaba.dubbo.config.annotation.Reference; import com.dc.sb.service.RemoteUserService; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class RemoteUserController { @Reference private RemoteUserService remoteUserService; @RequestMapping(value="/dubbo/say/{name}") public String sayHello(@PathVariable("name") String name){ String result=remoteUserService.sayHello(name); return result; } }

乐趣公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Dubbo + SpringBoot
喜欢 (0)

文章评论已关闭!