一、引包
新建两个项目:dubbo-server,dubbo-client; pom.xml添加下面的引用
<!-- dubbo依赖 -->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
dubbo-server,dubbo-client都要引用;
二、定义接口
dubbo-server,dubbo-client两端都要添加接口; 且两端接口包名、类名必须保持一致。
package com.dubbo.api;
public interface OrderService {
String query();
}
三、两端的Application注解
两端都添加上@EnableDubbo,表示启用dubbo;
四、application.yml
服务端:
dubbo:
application:
name: dubbo-server
registry:
address: 127.0.0.1:2181
protocol: zookeeper
check: false
protocol:
name: dubbo
port: 30003
monitor:
protocol: register
consumer:
check: false
timeout: 3000
server:
port: 8081
客户端:
dubbo:
application:
name: dubbo-consumer
registry:
address: 127.0.0.1:2181
protocol: zookeeper
check: false
monitor:
protocol: register
consumer:
check: false
timeout: 3000
server:
servlet:
context-path: /consumer
port: 8082
五、dubbo-server
添加@Service注解,声明供远程调用,注意是dubbo的@Service,不是Spring的@Service
import com.alibaba.dubbo.config.annotation.Service;
@Service
public class OrderServiceImpl implements OrderService {
@Override
public String query() {
return "{\"msg\":\"你好,我是dubbo远程调用的服务端,恭喜你成功了\"}";
}
}
六、dubbo-client
使用@Reference注入远程对象
@RestController
class HelloController {
@Reference
OrderService mService;
@GetMapping("/hello")
public String hello() {
return mService.query();
}
}
七、启动
- 启动zookeeper
- 启动dubbo-server
- 启动dubbo-client
- 浏览器访问 localhost:8082/consumer/hello