日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

瀏覽:147日期:2023-03-07 11:50:18
目錄1. 提出需求2. 環(huán)境準(zhǔn)備3. 業(yè)務(wù)接口整合4. 服務(wù)提供者5. 服務(wù)消費(fèi)者6. 測(cè)試7. 最后附上另外兩種配置文件整合方式7.1 XML整合配置文件7.2 配置類整合

本文主要介紹了IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn),分享給大家,具體如下:

放上一張Dubbo的架構(gòu)圖

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

剛剛學(xué)過SpringCloud,Dubbo雖然沒有Spring家族那么強(qiáng)悍,但始終不能違背Dubbo是一款高性能優(yōu)秀的RPC框架。

click官網(wǎng)地址了解更多

自己也是初學(xué)者,想自己動(dòng)手做一個(gè)簡(jiǎn)單的demo,于是上網(wǎng)查資料,發(fā)現(xiàn)針對(duì)那種入門的案例,網(wǎng)上主要有兩個(gè)比較經(jīng)典的,一個(gè)是尚硅谷雷神版,還有一個(gè)是官網(wǎng)推薦的入門 案例。

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

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

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

1. 提出需求

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)業(yè)務(wù)拆分IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

再次拆分

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

2. 環(huán)境準(zhǔn)備

1. Zookeeper-3.4.14

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

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

準(zhǔn)備好三個(gè)SpringBoot模塊

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

3. 業(yè)務(wù)接口整合

這個(gè)模塊的主要功能在于分包解耦

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

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 { //消費(fèi)訂單模塊 public List<UserAddress> getUserAddressList(String userId);}4. 服務(wù)提供者

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

UserServiceImpl.java

@Component@Service //用的是com.alibaba.dubbo.config.annotation.Service,目的是為了在注冊(cè)中心暴露服務(wù)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

#應(yīng)用端口server.port=8080#dubbo服務(wù)地址dubbo.application.name=user-service-provider#zk注冊(cè)中心協(xié)議和地址dubbo.registry.protocol=zookeeperdubbo.registry.address=127.0.0.1:2181#通信規(guī)則(通信協(xié)議和端口)dubbo.protocol.name=dubbodubbo.protocol.port=20880#連接監(jiān)控中心(這里面我沒有啟動(dòng)監(jiān)控中心)dubbo.monitor.protocol=registry

pom.xml 新增依賴

<!-- 引入公共API,以實(shí)現(xiàn)其接口 --><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. 服務(wù)消費(fèi)者

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

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 //暴露服務(wù)@Componentpublic class OrderServiceImpl implements OrderService { //遠(yuǎn)程調(diào)用服務(wù) @Reference(url = 'dubbo://127.0.0.1:20880') private UserService userService; @Override public List<UserAddress> initOrder(String userId) {return userService.getUserAddressList(userId); }}

@Reference這邊的URL指向需要注意,因?yàn)槲覀兊耐ㄐ艆f(xié)議使用dubbo,地址和端口也必須指明,否則會(huì)發(fā)現(xiàn)UserService 注入為null的現(xiàn)象!

OrderServiceConsumerApplication.java

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

application.properties

#dubbo服務(wù)名稱dubbo.application.name=order-service-consumer#zk地址dubbo.registry.address=zookeeper://127.0.0.1:2181#監(jiān)控中心配置dubbo.monitor.protocol=registry#這個(gè)需要注意,每一個(gè)服務(wù)的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. 測(cè)試

DEMO的測(cè)試流程應(yīng)該這樣

搭建ZK環(huán)境

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

搭建Dubbo可視化管理界面

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

項(xiàng)目啟動(dòng)

查看是否服務(wù)注冊(cè)進(jìn)來

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

接口調(diào)式

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

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

實(shí)現(xiàn)了RPC遠(yuǎn)程通信!!

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

因?yàn)镾pringBoot屏蔽了大量的XML配置,但是dubbo官方又建議我們使用XML配置,所以整合的最后附上XML配置

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

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'> <!--定義了提供方應(yīng)用信息,用于計(jì)算依賴關(guān)系;在 dubbo-admin 或 dubbo-monitor 會(huì)顯示這個(gè)名字,方便辨識(shí)--> <!-- 對(duì)應(yīng)properties:dubbo.application.name=user-service-provider--> <dubbo:application name='order-service-consumer' owner='lzy' organization='hgfzp'/> <!--使用 zookeeper 注冊(cè)中心暴露服務(wù),注意要先開啟 zookeeper--> <!-- 對(duì)應(yīng)properties:dubbo.registry.protocol=zookeeperdubbo.registry.address=127.0.0.1:2181--> <dubbo:registry address='zookeeper://localhost:2181'/> <!-- 用dubbo協(xié)議在20880端口暴露服務(wù) --> <!-- 對(duì)應(yīng)properties:dubbo.protocol.name=dubbo dubbo.protocol.port=20880--> <dubbo:protocol name='dubbo' port='20881' /> <!--使用 dubbo 協(xié)議實(shí)現(xiàn)定義好的 com.liuzeyu.service.UserService 接口--> <!-- 對(duì)應(yīng)@Component @Service注入U(xiǎn)serServiceImpl--> <dubbo:service interface='com.liuzeyu.service.OrderService' ref='orderService' protocol='dubbo' /> <!--具體實(shí)現(xiàn)該接口的 bean--> <bean /><!-- 配置監(jiān)控中心--> <dubbo:monitor protocol='registry'/></beans>

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

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'> <!--定義了提供方應(yīng)用信息,用于計(jì)算依賴關(guān)系;在 dubbo-admin 或 dubbo-monitor 會(huì)顯示這個(gè)名字,方便辨識(shí)--><!-- 對(duì)應(yīng)properties:dubbo.application.name=user-service-provider--> <dubbo:application name='user-service-provider' owner='lzy' organization='hgfzp'/> <!--使用 zookeeper 注冊(cè)中心暴露服務(wù),注意要先開啟 zookeeper--> <!-- 對(duì)應(yīng)properties:dubbo.registry.protocol=zookeeperdubbo.registry.address=127.0.0.1:2181--> <dubbo:registry address='zookeeper://localhost:2181'/> <!-- 用dubbo協(xié)議在20880端口暴露服務(wù) --><!-- 對(duì)應(yīng)properties:dubbo.protocol.name=dubbodubbo.protocol.port=20880--> <dubbo:protocol name='dubbo' port='20880' /> <!--使用 dubbo 協(xié)議實(shí)現(xiàn)定義好的 com.liuzeyu.service.UserService 接口--><!-- 對(duì)應(yīng)@Component@Service注入U(xiǎn)serServiceImpl--> <dubbo:service interface='com.liuzeyu.service.UserService' ref='userService' protocol='dubbo' /> <!--具體實(shí)現(xiàn)該接口的 bean--> <bean /> <dubbo:monitor protocol='registry'/></beans>

如需要啟動(dòng)測(cè)試記住需要注釋掉之前加在接口實(shí)現(xiàn)類上面的服務(wù)暴露配置

OrderServiceImpl:

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

UserServiceImpl:

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

7.2 配置類整合

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

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

OrderConfig.java 服務(wù)提供者使用

@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);//配置每一個(gè)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實(shí)現(xiàn)

ConsumerConfig.java 服務(wù)提供者使用

@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);//配置每一個(gè)Method信息List<MethodConfig> methodConfigs = new ArrayList<>();MethodConfig methodConfig = new MethodConfig();methodConfig.setId('orderService');methodConfig.setName('initOrder');methodConfigs.add(methodConfig);serviceConfig.setMethods(methodConfigs);return serviceConfig; }}

使用配置類需要注意兩點(diǎn)

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

需要將接口實(shí)現(xiàn)暴露出來

OrderServiceImpl

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

UserServiceImpl

IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)

兩種方案的配置文件整合同樣可以實(shí)現(xiàn)RPC通信,可自行測(cè)試!

到此這篇關(guān)于IDEA整合Dubbo+Zookeeper+SpringBoot實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)IDEA Dubbo Zookeeper SpringBoot內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精华国产欧美| 久久精品国产999大香线蕉| 免费不卡中文字幕在线| 伊人久久亚洲美女图片| 中文字幕亚洲影视| 欧美激情 亚洲a∨综合| 一区二区三区四区日本视频| 国产精品99一区二区| 夜夜嗨av一区二区三区网站四季av| 亚洲精品福利| 久久精品国产久精国产| 亚洲精品一二三区区别| 日本少妇一区二区| 久久av偷拍| 欧美日韩中文一区二区| 亚洲精品乱码| 国产a久久精品一区二区三区| 91高清一区| 91亚洲精品在看在线观看高清| 精品入口麻豆88视频| 尤物精品在线| 国产日韩免费| 亚洲成人精品| 69堂精品视频在线播放| av在线日韩| 日本一区福利在线| 欧美精品高清| 日韩精品欧美成人高清一区二区| 精品91福利视频| 国产免费成人| 国产一区二区久久久久| 免费人成在线不卡| 精品国产亚洲一区二区在线观看| 国产一区二区高清| 黄色网一区二区| 亚洲网址在线观看| 亚洲伦乱视频| 欧美激情 亚洲a∨综合| 免费成人在线影院| av亚洲一区二区三区| 欧美日韩一区二区三区四区在线观看| 亚洲不卡av不卡一区二区| 国产精品天堂蜜av在线播放| 婷婷精品进入| 久久精品国产一区二区| 中文字幕日韩亚洲| 久久精品青草| 久久伊人国产| 日韩av一二三| 三级亚洲高清视频| 欧美成人基地 | 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品一区二区99| 日韩网站在线| 国产精品原创| 国产精品一页| 亚洲人成网77777色在线播放| 色婷婷精品视频| 精品一区二区三区四区五区| 一区二区三区网站| 婷婷中文字幕一区| 日韩免费福利视频| 久久av免费| 97久久精品| 中文一区一区三区免费在线观| 国产麻豆久久| 欧美激情麻豆| 欧美一级二区| 三级久久三级久久久| 国产模特精品视频久久久久| 人人精品亚洲| 超碰在线99| 国内揄拍国内精品久久| 国产亚洲一区| 亚洲精品观看| 日韩中文字幕91| 在线一区免费| 久久香蕉国产| 亚洲h色精品| 特黄特色欧美大片| 久久精品电影| 日韩电影免费网站| 成人在线丰满少妇av| 国产精品va视频| 国产无遮挡裸体免费久久| 亚洲综合色婷婷在线观看| aa亚洲婷婷| 国产精品视区| 日韩专区在线视频| 亚洲综合色婷婷在线观看| 中文字幕亚洲精品乱码| 一区二区91| 最新亚洲国产| 日韩精品亚洲一区二区三区免费| 综合日韩在线| 91欧美精品| 国产探花一区在线观看| 久久国产乱子精品免费女| 欧美精品影院| 国产欧美精品久久| 国产伦理久久久久久妇女| 国产亚洲高清一区| 国产精品密蕾丝视频下载| 国产乱子精品一区二区在线观看| 国产欧美自拍一区| 国产精品一区二区av日韩在线| 国产精品mv在线观看| 久久av导航| 国产suv精品一区| 精精国产xxxx视频在线野外| se01亚洲视频| 激情综合网址| 模特精品在线| 亚洲区欧美区| 欧美私人啪啪vps| 久久国产精品美女| 成人国产精品一区二区网站| www.com.cn成人| 激情欧美一区二区三区| 亚洲欧美日韩国产| 日本亚州欧洲精品不卡| 国产精品一级在线观看| 黄色网一区二区| 国产综合色产| 视频一区在线视频| 日韩成人一级| 国产精品一线天粉嫩av| 精品入口麻豆88视频| 神马午夜久久| 日韩三级精品| 国产高清亚洲| 欧美日韩国产免费观看视频| 91精品婷婷色在线观看| 日韩欧美少妇| 99视频精品全部免费在线视频| 亚洲电影有码| 美女亚洲一区| 亚洲一区国产| 亚洲综合婷婷| 亚洲日产av中文字幕| 四虎成人精品一区二区免费网站| 亚洲精品成人| 另类激情亚洲| 日韩美女国产精品| 国产福利一区二区三区在线播放| 国产一区二区三区四区五区| 最新中文字幕在线播放| 久久人人97超碰国产公开结果| 91久久中文| 天堂va欧美ⅴa亚洲va一国产| 青青草国产成人99久久| 美腿丝袜亚洲三区| 中文字幕高清在线播放| 国产综合婷婷| 日本不卡的三区四区五区| 欧美国产不卡| 久久男人天堂| 一区二区国产在线观看| 成人一区不卡| 在线国产日韩| 久久男人av资源站| 日本一区二区三区中文字幕| 日韩欧美视频专区| 日韩激情视频网站| 久久精品国产www456c0m| 日产欧产美韩系列久久99| 亚洲人成在线网站| 日韩毛片网站| 亚洲精品电影| 国产精品成人a在线观看| 亚洲影院天堂中文av色| 麻豆理论在线观看| 日韩不卡手机在线v区| 久久精品99久久无色码中文字幕| 91成人在线网站| 91精品99| 黄色精品视频| 日韩三级一区| 午夜精品网站| 欧美激情视频一区二区三区在线播放| 久久av一区| 精精国产xxxx视频在线播放| 国产欧美一区二区色老头| 在线一区欧美| 三级在线看中文字幕完整版| 国产色噜噜噜91在线精品| 中文日韩欧美| caoporn视频在线| 青青草伊人久久| 日韩一区二区免费看| 国产福利电影在线播放| 日韩精品免费一区二区夜夜嗨| 亚洲精品网址| 欧美日韩视频网站| 麻豆精品久久久| 日本三级亚洲精品| 亚洲视频国产| 黄色av一区| 色爱综合av| 精品一区二区三区的国产在线观看|