# wxb-dubbo
**Repository Path**: chain_team/wxb-dubbo
## Basic Information
- **Project Name**: wxb-dubbo
- **Description**: wxb-dubbo 基于dubbo-2.5.3实现了consul registry, 增加了对spring boot的支持.
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2018-01-28
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
`wxb-dubbo` 基于[dubbo-2.5.3](https://github.com/alibaba/dubbo/tree/dubbo-2.5.3)实现了`consul registry`, 增加了对`spring boot`的支持.
依赖:
依赖包 | 版本 | |
--------------------|------------------|-----|
spring-boot | 1.4.3.RELEASE | |
spring | 4.3.5.RELEASE | |
consul-api | 1.2.1 | |
dubbo | 2.5.3 | |
### Quick Start
maven依赖:
```xml
com.source3g.dubbo
spring-boot-starter-dubbo
1.0-SNAPSHOT
com.source3g.dubbo
dubbo-registry-consul
1.0-SNAPSHOT
```
#### 服务提供者(Provider):
```java
public interface DemoService {
String say(String msg);
}
@Service
public class DemoServiceImpl implements DemoService {
@Override
public String say(String msg){
Assert.hasText(msg);
return "Hello " + msg;
}
}
```
**application.yml**
```yaml
spring:
dubbo:
application:
name: ${spring.application.name}
registry:
register: true
subscribe: false
address: consul://192.168.103.203:8500
protocol:
name: dubbo
port: -1
threads: 10
monitor:
protocol: registry
application:
name: demo-provider
```
#### 服务消费者(Consumer)
消费者注解配置
```java
@RestController
public class DemoController {
@Reference
private DemoService demoService;
@GetMapping("/say")
public String say(String msg){
return demoService.say(msg);
}
}
```
消费者`推荐`配置:
```java
@Configuration
@AutoConfigureAfter(DubboAutoConfiguration.class)
@EnableConfigurationProperties(DubboProperties.class)
public class DubboConfig {
@Autowired
private DubboProperties dubboProperties;
@Bean
public DemoService demoService(){
ReferenceConfig reference = new ReferenceConfig();
reference.setApplication(dubboProperties.getApplication());
reference.setRegistry(dubboProperties.getRegistry());
reference.setInterface(DemoService.class);
reference.setMonitor(dubboProperties.getMonitor());
return reference.get();
}
}
@RestController
public class DemoController {
@Autowired
private DemoService demoService;
@GetMapping("/say")
public String say(String msg){
return demoService.say(msg);
}
}
```
为何推荐后一种配置? 显式的创建Reference有利于将Bean托管给Spring,并对当前项目内同一个接口的引用统一管理。
**application.yml**
```yaml
spring:
dubbo:
application:
name: ${spring.application.name}
registry:
register: true
subscribe: true
address: consul://192.168.103.203:8500
protocol:
name: dubbo
port: -1
threads: 10
monitor:
protocol: registry
consumer:
timeout: 5000
health: true #健康检查
application:
name: demo-consumer
```