博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Dubbo - 03用法示例

Posted on 2021-01-11 19:16  Kingdomer  阅读(129)  评论(0)    收藏  举报

Dubbo - 03用法示例

(1)配置

官方文档: http://dubbo.apache.org/zh/docs/v2.7/user/configuration/

                      

消费端Consumer配置(遵循: 精确优先;消费者设置优先

    <!-- timeout: 默认是1000ms;  retries: 重试次数,不包含第一次调用 -->
    <dubbo:reference id="userService" interface="com.bearpx.dubbo.user.api.UserService"
                     check="false" timeout="5000" retries="3" version="1.0.0" >
        <dubbo:method name="getUser" timeout="5000" />
    </dubbo:reference>
    <!-- 配置当前消费者的统一规则: 所有的服务都不检查-->
    <dubbo:consumer check="false" timeout="5000"/> 

服务端Provider配置

    <bean id="userServiceImpl" class="com.bearpx.dubbo.user.api.impl.UserServiceImpl" />
    <!--4. 暴露服务  ref: 指向服务的真正的实现对象 -->
    <dubbo:service interface="com.bearpx.dubbo.user.api.UserService" ref="userServiceImpl"
                   timeout="5000" retries="3" version="1.0.0"/>

 

(2)多版本

    <!--4. 暴露服务-->
    <dubbo:service interface="com.bearpx.dubbo.user.api.UserService" ref="userServiceImpl"
                   timeout="5000" retries="3" version="1.0.0"/>
    <dubbo:service interface="com.bearpx.dubbo.user.api.UserService" ref="userServiceImpl02"
                   timeout="5000" retries="4" version="2.0.0"/>
    <bean id="userServiceImpl02" class="com.bearpx.dubbo.user.api.impl.UserServiceImpl" />

 

(3)本地存根

  <dubbo:service interface="com.bearpx.dubbo.user.api.UserService" ref="userServiceImpl02"
                   timeout="5000" retries="4" version="2.0.0" 
                   stub="com.bearpx.dubbo.user.api.impl.UserServiceStub"/>
public class UserServiceStub implements UserService {

    private UserService userService;

    public UserServiceStub(UserService userService){
        super();
        this.userService = userService;
    }

    @Override
    public List<User> getUser(String userId) {
        System.out.println("UserServiceStub...getUser()...");
        if(!StringUtils.isEmpty(userId)){
            return userService.getUser(userId);
        }
        return null;
    }
}

 

(4)SpringBoot与Dubbo整合方式

(4.1)导入 dubbo-spring-boot-starter,在application.properties配置属性,使用@Service暴露服务,使用@Reference引用服务,开启注解@EnableDubbo

(4.2)保留 dubbo xml配置文件,导入dubbo-spring-boot-starter,使用@ImportResource导入Dubbo的配置文件即可

@ImportResource(locations = "classpath:dubbo-provider.xml")
@SpringBootApplication
public class UserProviderApplicationV3 {}

(4.3)使用注解API方式,将每一个组件手动创建到容器中

@Configuration
public class MyDubboConfig {

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

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

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