https://github.com/apache/incubator-dubbo-spring-boot-project.git
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.4</version>
</dependency>
千万不要使用以下依赖(已废弃)
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
另外,如果你的公共包如xx-common
也引用了dubbo,请在xx-common
里加上<optional>true</optional>
application.yml
dubbo:
registry:
protocol: zookeeper
address: 127.0.0.1:2181
id: my-registry
protocol:
port: 20882
name: dubbo
status: server
id: dubbo
application:
name: demo-provider
id: demo-provider
qosEnable: true
qosPort: 22223
scan:
basePackages: org.hongxi.whatsmars.dubbo.demo.provider.service
provider
@Service(version = "1.0.0")
public class DemoServiceImpl implements DemoService {
@Autowired
private UserService userService;
public String sayHello(String name) {
boolean registerSuccess = userService.register(name);
System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
return "Hello " + name + ", registerSuccess:" + registerSuccess + ", response form provider: " + RpcContext.getContext().getLocalAddress();
}
}
application.yml
dubbo:
registry:
protocol: zookeeper
address: 127.0.0.1:2181
id: my-registry
protocol:
port: 20882
name: dubbo
id: dubbo
application:
name: demo-consumer
id: demo-consumer
qosEnable: true
qosPort: 22224
consumer
/**
* Created by javahongxi on 2017/12/4.
* 将服务调用包装,可以方便进行调用监控
*/
@Component
public class DemoRpc {
@Reference(version = "1.0.0")
private DemoService demoService;
public String sayHello(String name) {
String result = null;
try {
result = demoService.sayHello(name);
} catch (Exception e) {
// log
e.printStackTrace();
}
return result;
}
}
application.yml
dubbo:
registry:
protocol: zookeeper
address: 127.0.0.1:2181
id: my-registry
protocol:
port: 20882
name: dubbo
id: dubbo
application:
name: demo-consumer
id: demo-consumer
qosEnable: true
qosPort: 22224
registry:
other:
protocol: zookeeper
address: 127.0.0.1:2181
id: other
@Configuration
public class DubboConfig {
/**
* 配置文件里配置默认的,这里配置其他需要的
*/
@Bean("otherRegistry")
@ConfigurationProperties(prefix = "registry.other")
public RegistryConfig otherRegistry() {
return new RegistryConfig();
}
}
/**
* Created by javahongxi on 2017/12/4.
* 将服务调用包装,可以方便进行调用监控
*/
@Component
public class DemoRpc {
@Reference(version = "1.0.0")
private DemoService demoService;
@Reference(version = "1.0.0", registry = "otherRegistry")
private OtherService otherService;
public String sayHello(String name) {
String result = null;
try {
result = demoService.sayHello(name);
} catch (Exception e) {
// log
e.printStackTrace();
}
return result;
}
public String sayHello2(String name) {
String result = null;
try {
result = otherService.sayHello(name);
} catch (Exception e) {
// log
e.printStackTrace();
}
return result;
}
}
@Service(
version = "1.0.0",
registry = {"my-registry", "otherRegistry"}
)
public class OtherServiceImpl implements OtherService {
@Autowired
private UserService userService;
public String sayHello(String name) {
boolean registerSuccess = userService.register(name);
System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
return "Hello " + name + ", registerSuccess:" + registerSuccess + ", response form provider: " + RpcContext.getContext().getLocalAddress();
}
}
PS: Dubbo优雅停机应该 kill -> sleep -> kill -9,切勿直接kill -9