本篇文章主要是提供基本的dubbo服务端和消费者模型搭建并进行简单调用的案例。基于dubbo2.7.1,并使用注解方式进行服务暴露和引用。
实现功能
服务端提供城市信息获取的功能。消费端通过dubbo调用服务端获取到城市信息。
服务端搭建
首先我们新建一个springboot项目,名称叫dubbo-provider。(如何创建springboot项目可以自行百度)
然后在pom文件中引入dubbo的jar
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.1</version>
</dependency>
新建一个CityService的接口类,提供获取城市名称的功能
public interface CityService {
String getCityName();
}
创建一个实现该接口的类,并加上@Service
注解(属于包org.apache.dubbo.config.annotation下的)
@Service
public class CityServiceImpl implements CityService {
@Override
public String getCityName() {
return "hangzhou";
}
}
@Service
注解表示暴露服务,dubbo识别到该注解会将其注册到注册中心去。
在你的springboot应用的Application上加上注解@EnableDubbo
@EnableDubbo
@SpringBootApplication
public class DubboAnalyzeApplication {
public static void main(String[] args) {
SpringApplication.run(DubboAnalyzeApplication.class, args);
}
}
EnableDubbo注解表示启用dubbo扫描,除了会将配置文件里的配置注入以外,还会解析@Service
以及@Reference
注解并实例化成bean。
resources目录下新增dubbo.properties文件,添加内容如下
dubbo.application.name=provider
dubbo.protocol.port=20889
dubbo.registry.address=zookeeper://192.168.10.118:2181
dubbo会自动去扫dubbo.properties文件并解析内容,注册中心改为你自己的地址。
至此服务端就搭建完成了。
消费端搭建
同样的我们新建一个springboot项目,名称叫dubbo-consumer。
引入dubbo的jar包
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.1</version>
</dependency>
再引入服务端的接口,服务端可以将接口单独放到一个module里并打成jar包对外提供使用,我这里为了方便,没有做分离,直接引入了服务端的jar包
<dependency>
<groupId>com.example</groupId>
<artifactId>dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
创建一个调用服务的类,我这里为了Web演示,用springmvc来创建类名为MyController的类,加一个成员变量CityService类型的(此类型就是上面服务端中创建的接口类),并在上面加一个@Reference
注解。
@RestController
public class MyController {
@Reference
CityService cityService;
@PostMapping("hello")
public void hello(){
String name = cityService.getCityName();
System.out.println("finish");
}
}
Reference注解用于引用对应的城市信息服务,dubbo会为其生成一个代理类。
其他的步骤和上面服务端的一样,Application上加注解@EnableDubbo
并在resources目录下新增dubbo.properties文件,注册中心一样改为你自己的地址。
@EnableDubbo
@SpringBootApplication
public class DubboAnalyzeApplication {
public static void main(String[] args) {
SpringApplication.run(DubboAnalyzeApplication.class, args);
}
}
dubbo.application.name=consumer
dubbo.protocol.port=20888
dubbo.registry.address=zookeeper://192.168.10.118:2181
至此消费端也搭建完成了。
测试
用postman发一个请求到消费端,结果如下:
可以看到已经成功调用到服务端了。
总结
整体还是比较简单的,还有其他配置方式比如xml、api、注解等,更详细的配置内容可以参考官网
https://dubbo.apache.org/zh/d...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。