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; } }

浙公网安备 33010602011771号