首先,启zookeeper
然后,搭服务提供者:
pom.xml
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-actuator</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-autoconfigure</artifactId>
<version>0.2.0</version>
</dependency>
如果maven报错下载不到对应的jar包,则手工配一下公共仓库:
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
配application.properties或application.yml
# 服务提供者的版本号
demo.service.version=1.0.0
# 服务提供者的实现类的包路径
dubbo.scan.basePackages =com.example.demo.provider
dubbo.application.id=dubbo-provider-demo
dubbo.application.name=dubbo-provider-demo
dubbo.application.qos.port=22222
dubbo.application.qos.enable=true
# 协议
dubbo.protocol.id=dubbo
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.protocol.status=server
## 动物管理员的地址
dubbo.registry.id=my-registry
dubbo.registry.address=zookeeper://10.100.14.54:2181
服务提供者的实现类:
@Service(
version = "${demo.service.version}",
application = "${dubbo.application.id}",
protocol = "${dubbo.protocol.id}",
registry = "${dubbo.registry.id}"
)
public class DemoServiceImpl implements DemoService {
@Override
public String sayHello() {
return "欢迎使用Dubbo,DemoServiceImpl say: Hello Dubbo!";
}
}
至此,基于Spring Boot的dubbo服务提供者就完成了。
再看dubbo消费者的工程:
pom文件和起动配置文件基本一样。
消费者的引用如下:
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Reference(version = "${demo.service.version}",
application = "${dubbo.application.id}",
url = "dubbo://localhost:20880")
private DemoService demoService;
@RequestMapping("hello")
public String hello() {
String str = demoService.sayHello();
return str;
}
}
注:DemoService是接口类,可以通过公共引用工程,也可以创建同名同package和方法名的接口类。
然后访问地址:http://localhost:10087/consumer/hello
能得到提供者实现类里的类容,容表示访问成功。