最近项目中要使用dubbo进行分布式部署,这里就介绍一下实际工作中的一些操作。
1.安装zookeeper
在官网下载zookeeper来安装,我本机安装的zookeeper-3.4.6Windows版本。双击bin/zkServer.cmd启动。
2.添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>1.5.10.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.1.1</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.9</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency>
3.修改application.properties
在application.properties中添加dubbo的属性:
dubbo.application.name=user-provider dubbo.scan.basePackages=com.test.example dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.protocol.port=20890
指定host和port,名称和包名。
4.修改Application
在启动类中增加注解@EnableDubboConfig
@SpringBootApplication @ServletComponentScan @EnableDubboConfig public class WmUserServiceProviderApplication { public static void main(String[] args) { SpringApplication.run(WmUserServiceProviderApplication.class, args); } }
5.增加提供方接口
@Service(interfaceClass = com.test.example.UserService.class, timeout = 100000) @Component public class UserServiceImpl implements UserService { @Autowired private UserRepository userRepository; }
注意这里的注解@Service不能用spring的,应该是com.alibaba.dubbo.config.annotation.Service,里面有很多属性,需要指定接口类interfaceClass ,客户端调用默认超时是1秒,如果需要可以设置timeout,其他属性可自行设置。
启动WmUserServiceProviderApplication,service提供方就OK了。
6.修改客户端工程
dubbo.application.name=consumer dubbo.registry.address=zookeeper://127.0.0.1:2181
pom添加依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>1.5.10.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.1.1</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.9</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency>
7.客户端使用service
@Reference private UserService userService;
使用阿里的dubbo注解引用服务端的接口,com.alibaba.dubbo.config.annotation.Reference。
8.启动
客户端启动类也需要增加@EnableDubboConfig注解,启动成功后可以使用服务器的service了。
这样一个最简单的springboot+dubbo的rpc项目就搭建成功了。