国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

IDEA整合Dubbo+Zookeeper+SpringBoot實現

瀏覽:63日期:2023-03-07 11:50:18
目錄1. 提出需求2. 環境準備3. 業務接口整合4. 服務提供者5. 服務消費者6. 測試7. 最后附上另外兩種配置文件整合方式7.1 XML整合配置文件7.2 配置類整合

本文主要介紹了IDEA整合Dubbo+Zookeeper+SpringBoot實現,分享給大家,具體如下:

放上一張Dubbo的架構圖

IDEA整合Dubbo+Zookeeper+SpringBoot實現

剛剛學過SpringCloud,Dubbo雖然沒有Spring家族那么強悍,但始終不能違背Dubbo是一款高性能優秀的RPC框架。

click官網地址了解更多

自己也是初學者,想自己動手做一個簡單的demo,于是上網查資料,發現針對那種入門的案例,網上主要有兩個比較經典的,一個是尚硅谷雷神版,還有一個是官網推薦的入門 案例。

雷神的Dubbo視頻教程大神講解

視頻中用的eclipse開發,習慣IDEA開發的我們不免手癢想要使用IDEA整合一波。

IDEA整合Dubbo+Zookeeper+SpringBoot實現

1. 提出需求

IDEA整合Dubbo+Zookeeper+SpringBoot實現業務拆分IDEA整合Dubbo+Zookeeper+SpringBoot實現

再次拆分

IDEA整合Dubbo+Zookeeper+SpringBoot實現

2. 環境準備

1. Zookeeper-3.4.14

2. dubbo-admin 可視化管理界面

安裝過程參照雷神視頻,沒什么技術含量

準備好三個SpringBoot模塊

IDEA整合Dubbo+Zookeeper+SpringBoot實現

3. 業務接口整合

這個模塊的主要功能在于分包解耦

IDEA整合Dubbo+Zookeeper+SpringBoot實現

UserAddress.java:

public class UserAddress implements Serializable { private Integer id; private String userAddress; private String userId; private String consignee; private String phoneNum; private String isDefault; public Integer getId() {return id; } public void setId(Integer id) {this.id = id; } public String getUserAddress() {return userAddress; } public void setUserAddress(String userAddress) {this.userAddress = userAddress; } public String getUserId() {return userId; } public void setUserId(String userId) {this.userId = userId; } public String getConsignee() {return consignee; } public void setConsignee(String consignee) {this.consignee = consignee; } public String getPhoneNum() {return phoneNum; } public void setPhoneNum(String phoneNum) {this.phoneNum = phoneNum; } public String getIsDefault() {return isDefault; } public void setIsDefault(String isDefault) {this.isDefault = isDefault; } public UserAddress(Integer id, String userAddress, String userId, String consignee, String phoneNum, String isDefault) {this.id = id;this.userAddress = userAddress;this.userId = userId;this.consignee = consignee;this.phoneNum = phoneNum;this.isDefault = isDefault; } @Override public String toString() {return 'UserAddress{' +'id=' + id +', userAddress=’' + userAddress + ’’’ +', userId=’' + userId + ’’’ +', consignee=’' + consignee + ’’’ +', phoneNum=’' + phoneNum + ’’’ +', isDefault=’' + isDefault + ’’’ +’}’; }}

OrderService.java

public interface OrderService { //初始化訂單模塊 public List<UserAddress> initOrder(String userId);}

UserService.java

public interface UserService { //消費訂單模塊 public List<UserAddress> getUserAddressList(String userId);}4. 服務提供者

IDEA整合Dubbo+Zookeeper+SpringBoot實現

UserServiceImpl.java

@Component@Service //用的是com.alibaba.dubbo.config.annotation.Service,目的是為了在注冊中心暴露服務public class UserServiceImpl implements UserService { @Override public List<UserAddress> getUserAddressList(String userId) {UserAddress userAddress1 = new UserAddress(1,'福建省莆田市','37','劉老師','10086','1');UserAddress userAddress2 = new UserAddress(2,'福建省福州市','33','黃老師','1001','1');List<UserAddress> addresses = new ArrayList<>();addresses.add(userAddress1);addresses.add(userAddress2);return addresses; }}

UserServiceProviderApplication.java

@EnableDubbo //開啟Dubbo @SpringBootApplicationpublic class UserServiceProviderApplication {public static void main(String[] args) {SpringApplication.run(UserServiceProviderApplication.class, args);}}

application.properties

#應用端口server.port=8080#dubbo服務地址dubbo.application.name=user-service-provider#zk注冊中心協議和地址dubbo.registry.protocol=zookeeperdubbo.registry.address=127.0.0.1:2181#通信規則(通信協議和端口)dubbo.protocol.name=dubbodubbo.protocol.port=20880#連接監控中心(這里面我沒有啟動監控中心)dubbo.monitor.protocol=registry

pom.xml 新增依賴

<!-- 引入公共API,以實現其接口 --><dependency><groupId>com.liuzeyu</groupId><artifactId>gmall-interface</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- 引入spring-boot-starter以及dubbo和curator的依賴 --><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.2.0</version></dependency>5. 服務消費者

IDEA整合Dubbo+Zookeeper+SpringBoot實現

OrderController.java

@RequestMapping('order')@Controllerpublic class OrderController { @Autowired private OrderService orderService; @ResponseBody //以json格式返回 @RequestMapping('/initOrder') public List<UserAddress> initOrder(@RequestParam('uid') String userId){List<UserAddress> userAddresses = orderService.initOrder(userId);return userAddresses; }}

OrderServiceImpl.java

@Service //暴露服務@Componentpublic class OrderServiceImpl implements OrderService { //遠程調用服務 @Reference(url = 'dubbo://127.0.0.1:20880') private UserService userService; @Override public List<UserAddress> initOrder(String userId) {return userService.getUserAddressList(userId); }}

@Reference這邊的URL指向需要注意,因為我們的通信協議使用dubbo,地址和端口也必須指明,否則會發現UserService 注入為null的現象!

OrderServiceConsumerApplication.java

@EnableDubbo@SpringBootApplicationpublic class OrderServiceConsumerApplication {public static void main(String[] args) {SpringApplication.run(OrderServiceConsumerApplication.class, args);}}

application.properties

#dubbo服務名稱dubbo.application.name=order-service-consumer#zk地址dubbo.registry.address=zookeeper://127.0.0.1:2181#監控中心配置dubbo.monitor.protocol=registry#這個需要注意,每一個服務的dubbo端口不能沖突dubbo.protocol.port=20881server.port=8081

pom.xml

<!-- springboot web模塊 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.liuzeyu</groupId><artifactId>gmall-interface</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- 引入spring-boot-starter以及dubbo和curator的依賴 --><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.2.0</version></dependency>6. 測試

DEMO的測試流程應該這樣

搭建ZK環境

IDEA整合Dubbo+Zookeeper+SpringBoot實現

搭建Dubbo可視化管理界面

IDEA整合Dubbo+Zookeeper+SpringBoot實現

項目啟動

查看是否服務注冊進來

IDEA整合Dubbo+Zookeeper+SpringBoot實現

接口調式

訪問:http://localhost:8081/order/initOrder?uid=33

IDEA整合Dubbo+Zookeeper+SpringBoot實現

實現了RPC遠程通信!!

7. 最后附上另外兩種配置文件整合方式7.1 XML整合配置文件

因為SpringBoot屏蔽了大量的XML配置,但是dubbo官方又建議我們使用XML配置,所以整合的最后附上XML配置

IDEA整合Dubbo+Zookeeper+SpringBoot實現

consumer.xml

<?xml version='1.0' encoding='UTF-8'?><beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:dubbo='http://code.alibabatech.com/schema/dubbo' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd'> <!--定義了提供方應用信息,用于計算依賴關系;在 dubbo-admin 或 dubbo-monitor 會顯示這個名字,方便辨識--> <!-- 對應properties:dubbo.application.name=user-service-provider--> <dubbo:application name='order-service-consumer' owner='lzy' organization='hgfzp'/> <!--使用 zookeeper 注冊中心暴露服務,注意要先開啟 zookeeper--> <!-- 對應properties:dubbo.registry.protocol=zookeeperdubbo.registry.address=127.0.0.1:2181--> <dubbo:registry address='zookeeper://localhost:2181'/> <!-- 用dubbo協議在20880端口暴露服務 --> <!-- 對應properties:dubbo.protocol.name=dubbo dubbo.protocol.port=20880--> <dubbo:protocol name='dubbo' port='20881' /> <!--使用 dubbo 協議實現定義好的 com.liuzeyu.service.UserService 接口--> <!-- 對應@Component @Service注入UserServiceImpl--> <dubbo:service interface='com.liuzeyu.service.OrderService' ref='orderService' protocol='dubbo' /> <!--具體實現該接口的 bean--> <bean /><!-- 配置監控中心--> <dubbo:monitor protocol='registry'/></beans>

IDEA整合Dubbo+Zookeeper+SpringBoot實現

provider.xml

<?xml version='1.0' encoding='UTF-8'?><beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:dubbo='http://code.alibabatech.com/schema/dubbo' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd'> <!--定義了提供方應用信息,用于計算依賴關系;在 dubbo-admin 或 dubbo-monitor 會顯示這個名字,方便辨識--><!-- 對應properties:dubbo.application.name=user-service-provider--> <dubbo:application name='user-service-provider' owner='lzy' organization='hgfzp'/> <!--使用 zookeeper 注冊中心暴露服務,注意要先開啟 zookeeper--> <!-- 對應properties:dubbo.registry.protocol=zookeeperdubbo.registry.address=127.0.0.1:2181--> <dubbo:registry address='zookeeper://localhost:2181'/> <!-- 用dubbo協議在20880端口暴露服務 --><!-- 對應properties:dubbo.protocol.name=dubbodubbo.protocol.port=20880--> <dubbo:protocol name='dubbo' port='20880' /> <!--使用 dubbo 協議實現定義好的 com.liuzeyu.service.UserService 接口--><!-- 對應@Component@Service注入UserServiceImpl--> <dubbo:service interface='com.liuzeyu.service.UserService' ref='userService' protocol='dubbo' /> <!--具體實現該接口的 bean--> <bean /> <dubbo:monitor protocol='registry'/></beans>

如需要啟動測試記住需要注釋掉之前加在接口實現類上面的服務暴露配置

OrderServiceImpl:

IDEA整合Dubbo+Zookeeper+SpringBoot實現

UserServiceImpl:

IDEA整合Dubbo+Zookeeper+SpringBoot實現

7.2 配置類整合

通過配置自定義配置類注入配置信息

IDEA整合Dubbo+Zookeeper+SpringBoot實現

OrderConfig.java 服務提供者使用

@Configurationpublic class OrderConfig { @Bean public ApplicationConfig applicationConfig(){ApplicationConfig applicationConfig = new ApplicationConfig();applicationConfig.setName('user-service-provider');applicationConfig.setOwner('lzy');applicationConfig.setOrganization('hgfzp');return applicationConfig; } @Bean public RegistryConfig registryConfig(){RegistryConfig registryConfig = new RegistryConfig();registryConfig.setProtocol('zookeeper');registryConfig.setAddress('127.0.0.1:2181');return registryConfig; } @Bean public ProtocolConfig protocolConfig(){ProtocolConfig protocolConfig = new ProtocolConfig();protocolConfig.setName('dubbo');protocolConfig.setPort(20880);return protocolConfig; } @Bean public ServiceConfig<UserService> serviceConfig(UserService userService){ServiceConfig<UserService> serviceConfig = new ServiceConfig<UserService>();serviceConfig.setInterface(UserService.class);serviceConfig.setRef(userService);//配置每一個Method信息List<MethodConfig> methodConfigs = new ArrayList<>();MethodConfig methodConfig = new MethodConfig();methodConfig.setId('userService');methodConfig.setName('getUserAddressList');methodConfigs.add(methodConfig);serviceConfig.setMethods(methodConfigs);return serviceConfig; }}

IDEA整合Dubbo+Zookeeper+SpringBoot實現

ConsumerConfig.java 服務提供者使用

@Configurationpublic class ConsumerConfig { @Bean public ApplicationConfig applicationConfig(){ApplicationConfig applicationConfig = new ApplicationConfig();applicationConfig.setName('order-service-consumer');applicationConfig.setOwner('lzy');applicationConfig.setOrganization('hgfzp');return applicationConfig; } @Bean public RegistryConfig registryConfig(){RegistryConfig registryConfig = new RegistryConfig();registryConfig.setProtocol('zookeeper');registryConfig.setAddress('127.0.0.1:2181');return registryConfig; } @Bean public ProtocolConfig protocolConfig(){ProtocolConfig protocolConfig = new ProtocolConfig();protocolConfig.setName('dubbo');protocolConfig.setPort(20881);return protocolConfig; } @Bean public ServiceConfig<OrderService> serviceConfig(OrderService orderService){ServiceConfig<OrderService> serviceConfig = new ServiceConfig<OrderService>();serviceConfig.setInterface(OrderService.class);serviceConfig.setRef(orderService);//配置每一個Method信息List<MethodConfig> methodConfigs = new ArrayList<>();MethodConfig methodConfig = new MethodConfig();methodConfig.setId('orderService');methodConfig.setName('initOrder');methodConfigs.add(methodConfig);serviceConfig.setMethods(methodConfigs);return serviceConfig; }}

使用配置類需要注意兩點

需要指定dubbo配置類的包掃描路徑,啟動類上配置 @EnableDubbo(scanBasePackages = 'com.liuzeyu')

需要將接口實現暴露出來

OrderServiceImpl

IDEA整合Dubbo+Zookeeper+SpringBoot實現

UserServiceImpl

IDEA整合Dubbo+Zookeeper+SpringBoot實現

兩種方案的配置文件整合同樣可以實現RPC通信,可自行測試!

到此這篇關于IDEA整合Dubbo+Zookeeper+SpringBoot實現的文章就介紹到這了,更多相關IDEA Dubbo Zookeeper SpringBoot內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 亚洲三级a| 日韩美女强理论片 | 2022国产精品网站在线播放 | 18成人免费观看网站入口 | 三级c欧美做人爱视频 | 国产日韩精品视频一区二区三区 | 特黄特黄一级高清免费大片 | 久久久午夜精品理论片 | 国产三级日本三级日产三级66 | 午夜精品免费 | 性做久久久久久久免费观看 | 久久久久久久久久久96av | 亚洲国产三级在线观看 | 偷柏自拍亚洲欧美综合在线图 | 亚洲一区二区三区免费 | 国产精品18久久久久久久久久 | 日本aaaa片毛片免费 | 99久久国产免费福利 | 免费国产成人午夜在线观看 | 久久久精品免费热线观看 | 国产亚洲精品一区二区久久 | 综合 91在线精品 | 亚洲 自拍 另类 欧美 综合 | 九九国产在线视频 | 免费a级在线观看播放 | 色三级大全高清视频在线观看 | 精品视频h | 亚洲综合一区二区不卡 | 国产v片在线播放免费观 | 国产日韩一区二区三区在线观看 | 日韩免费一区二区三区在线 | 韩国一级黄色大片 | 亚洲欧美综合一区二区三区四区 | 亚洲免费成人网 | 一级毛片免费观看久 | 亚洲线精品久久一区二区三区 | 伊人网五月天 | 亚洲视频国产 | 亚洲精品成人av在线 | 成人黄网18免费观看的网站 | 国产精品久久久久久福利 |