springboot整合dubbo发布服务,zookeeper做注册中心。前期的安装zookeeper以及启动zookeeper集群就不说了。
dubbo-admin-2.5.4.war:dubbo服务管理项目,下载完后部署到tomcat即可查看(登录的用户名和密码默认都是root)。
pom文件引入dubbo以及zkcli包:
com.alibaba.spring.boot
dubbo-spring-boot-starter
2.0.0
com.101tec
zkclient
0.9
1.dubbo服务端(提供dubbo服务)
目录结构如下:
配置文件如下
application.properties
############################################################
#
# DUBBO相关配置
#
############################################################
#当前服务/应用名称
spring.dubbo.application.name=provider
#注册中心的协议和地址
#spring.dubbo.registry.address=127.0.0.1:2181
#spring.dubbo.registry.protocol=zookeeper
spring.dubbo.server=true
spring.dubbo.registry=zookeeper://127.0.0.1:2181
#通信规则(通信协议和接口)
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
User.java
packageorg.springboot.dubbo.bean;importjava.io.Serializable;public class User implementsSerializable {privateString userName;privateString password;publicString getUserName() {returnuserName;
}public voidsetUserName(String userName) {this.userName =userName;
}publicString getPassword() {returnpassword;
}public voidsetPassword(String password) {this.password =password;
}publicUser(String userName, String password) {super();this.userName =userName;this.password =password;
}
}
UserService.java
packageorg.springboot.dubbo.service;importjava.util.List;importorg.springboot.dubbo.bean.User;public interfaceUserService {
ListgetAllUsers();
User getUserByUserName(String username);
}
UserServiceImpl.java(注解发布服务,注意@Service注解是dubbo提供的)
packageorg.springboot.dubbo.service;importjava.util.ArrayList;importjava.util.List;importorg.springboot.dubbo.bean.User;importorg.springframework.stereotype.Component;importcom.alibaba.dubbo.config.annotation.Service;
@Service(version= "1.0.0") //dubbo的service注解,不具备spring的@service注解的功能
@Componentpublic class UserServiceImpl implementsUserService {public ListgetAllUsers() {
List users = new ArrayList();for (int i = 0; i < 20; i++) {
User user= new User("usernnamei" + i, "password" +i);
users.add(user);
}returnusers;
}publicUser getUserByUserName(String username) {return newUser(username, username);
}
}
应用启动类:
packageorg.springboot.dubbo;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importcom.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
@SpringBootApplication
@EnableDubboConfigurationpublic classMySpringBootApplication {public static void main(String[] args) throwsInterruptedException {//入口运行类
SpringApplication.run(MySpringBootApplication.class, args);
Thread.sleep(50 * 1000);
}
}
启动之后查看dubbo管理界面:
2.dubbo客户端(使用dubbo提供的服务)
目录结构:
application.properties
############################################################
#
# DUBBO相关配置
#
############################################################
#当前服务/应用名称
spring.dubbo.application.name=consumer
#注册中心的协议和地址
spring.dubbo.server=true
spring.dubbo.registry=zookeeper://127.0.0.1:2181
#通信规则(通信协议和接口)
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=org.springboot.dubbo
UserController.java(通过@Reference消费服务)
packageorg.springboot.dubbo.controller;importjava.util.List;importorg.springboot.dubbo.bean.User;importorg.springboot.dubbo.service.UserService;importorg.springframework.stereotype.Controller;importcom.alibaba.dubbo.config.annotation.Reference;
@Controllerpublic classUserController {
@Reference(version= "1.0.0")
UserService userService;public ListgetAllUsers() {returnuserService.getAllUsers();
}publicUser getUserByUserName(String username) {returnuserService.getUserByUserName(username);
}
}
结果:
管理界面查看如下:
至此基本完成了简单的dubbo环境搭建。