日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Dubbo搭建HelloWorld-搭建服务提供者与服务消费者并完成远程调用(附代码下载)

發布時間:2025/3/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dubbo搭建HelloWorld-搭建服务提供者与服务消费者并完成远程调用(附代码下载) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景

Dubbo簡介與基本概念:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103555224

Dubbo環境搭建-ZooKeeper注冊中心:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103555470

Dubbo環境搭建-管理控制臺dubbo-admin實現服務監控:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103624846

在上面搭建好ZooKeeper注冊中心和管理控制臺dubbo-admin搭建后,實現HelloWorld程序完成基本入門。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現

為了解決依賴問題與實現微服務的概念,下面需要新建三個Maven Project

gmall-interface 用來作為公共依賴,存放公共接口和公共Bean等。

uesr-service-provider 搭建服務提供者

order-service-consumer 搭建服務消費者

新建公共接口程序

打開Eclipse-新建maven Project

?

輸入相關坐標信息,后面兩個項目過程也是如此。

?

然后在項目下新建包com.badao.gmall

然后再新建bean包和service包

bean中新建UserAddress實體類

package com.badao.gmall.bean;import java.io.Serializable;/*** 用戶地址* @author badao**/ public class UserAddress implements Serializable {private Integer id;private String userAddress; //用戶地址private String userId; //用戶idprivate String consignee; //收貨人private String phoneNum; //電話號碼private String isDefault; //是否為默認地址??? Y-是???? N-否public UserAddress() {super();// TODO Auto-generated constructor stub}public UserAddress(Integer id, String userAddress, String userId, String consignee, String phoneNum,String isDefault) {super();this.id = id;this.userAddress = userAddress;this.userId = userId;this.consignee = consignee;this.phoneNum = phoneNum;this.isDefault = 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;}}

然后在service包下新建兩個公共接口類

?

OrderService.java

package com.badao.gmall.service;import java.util.List;import com.badao.gmall.bean.UserAddress;public interface OrderService {/*** 初始化訂單* @param userId*/public List<UserAddress> initOrder(String userId);}該接口聲明一個初始化訂單的方法。UserService.javapackage com.badao.gmall.service;import java.util.List;import com.badao.gmall.bean.UserAddress;/*** 用戶服務* @author badao**/ public interface UserService {/*** 按照用戶id返回所有的收貨地址* @param userId* @return*/public List<UserAddress> getUserAddressList(String userId);}

該接口提供獲取所有收獲地址的方法的聲明

新建服務提供者程序

參照上面流程,新建user-service-provider

然后在pom.xml中引入上面公共接口的依賴

??<dependency><groupId>com.badao.gmall</groupId><artifactId>gmall-interface</artifactId><version>0.0.1-SNAPSHOT</version></dependency>

然后還要引入dubbo以及zookeeper的依賴

??<!-- 引入dubbo --><!-- https://mvnrepository.com/artifact/com.alibaba/dubbo --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.2</version></dependency><!-- 注冊中心使用的是zookeeper,引入操作zookeeper的客戶端端 --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.12.0</version></dependency>

完整pom.xml代碼

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.badao.gmall</groupId><artifactId>user-service-provider</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>com.badao.gmall</groupId><artifactId>gmall-interface</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- 引入dubbo --><!-- https://mvnrepository.com/artifact/com.alibaba/dubbo --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.2</version></dependency><!-- 注冊中心使用的是zookeeper,引入操作zookeeper的客戶端端 --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.12.0</version></dependency></dependencies> </project>

在項目下新建service.impl包,包下新建實現類

package com.badao.gmall.service.impl;import java.util.Arrays; import java.util.List;import com.badao.gmall.bean.UserAddress; import com.badao.gmall.service.UserService;public class UserServiceImpl implements UserService {public List<UserAddress> getUserAddressList(String userId) {// TODO Auto-generated method stubUserAddress address1 = new UserAddress(1, "霸道流氓氣質", "1", "李老師", "123456789", "Y");UserAddress address2 = new UserAddress(2, "公眾號:霸道的程序猿)", "1", "王老師", "987654321", "N");return Arrays.asList(address1,address2);}}

然后按照其官方指示,新建配置文件并配置服務提供者

?

在src/main/resource下新建配置文件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.xsdhttp://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 1、指定當前服務/應用的名字(同樣的服務名字相同,不要和別的服務同名) --><dubbo:application name="user-service-provider"></dubbo:application><!-- 2、指定注冊中心的位置 兩種方式 --><!-- <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry> --><dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"></dubbo:registry><!-- 3、指定通信規則(通信協議?通信端口) --><dubbo:protocol name="dubbo" port="20882"></dubbo:protocol><!-- 4、暴露服務?? ref:指向服務的真正的實現對象 --><dubbo:service interface="com.badao.gmall.service.UserService"ref="userServiceImpl" timeout="1000" version="1.0.0"><dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method></dubbo:service><!--統一設置服務提供方的規則? --><dubbo:provider timeout="1000"></dubbo:provider><bean id="userServiceImpl" class="com.badao.gmall.service.impl.UserServiceImpl"></bean></beans>

然后在com.badao.gmall包下新建MainApplication.java

讀取配置文件并暴露服務。

package com.badao.gmall;import java.io.IOException;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApplication {public static void main(String[] args) throws IOException {ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("provider.xml");ioc.start();System.in.read();}}

搭建服務消費者程序

參照上面流程新建order-service-consumer服務消費者程序

在pom.xml中添加公共接口依賴以及dubbo和zookeeper相關依賴

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.badao.gmall</groupId><artifactId>user-service-provider</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>com.badao.gmall</groupId><artifactId>gmall-interface</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- 引入dubbo --><!-- https://mvnrepository.com/artifact/com.alibaba/dubbo --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.2</version></dependency><!-- 注冊中心使用的是zookeeper,引入操作zookeeper的客戶端端 --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.12.0</version></dependency></dependencies> </project>

然后新建接口實現類OrderServiceImpl

package com.badao.gmall.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import com.badao.gmall.bean.UserAddress; import com.badao.gmall.service.OrderService; import com.badao.gmall.service.UserService;/*** 1、將服務提供者注冊到注冊中心(暴露服務)* ??1)、導入dubbo依賴(2.6.2)\操作zookeeper的客戶端(curator)* ??2)、配置服務提供者** 2、讓服務消費者去注冊中心訂閱服務提供者的服務地址* @author badao**/ @Service public class OrderServiceImpl implements OrderService {@AutowiredUserService userService;public List<UserAddress> initOrder(String userId) {// TODO Auto-generated method stubSystem.out.println("用戶id:"+userId);//1、查詢用戶的收貨地址List<UserAddress> addressList = userService.getUserAddressList(userId);for (UserAddress userAddress : addressList) {System.out.println(userAddress.getUserAddress());}return addressList;}}

按照官方指示,同樣新建服務消費者配置文件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://dubbo.apache.org/schema/dubbo"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><context:component-scan base-package="com.badao.gmall.service.impl"></context:component-scan><dubbo:application name="order-service-consumer"></dubbo:application><dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry><!--聲明需要調用的遠程服務的接口;生成遠程服務代理? --><!--1)、精確優先 (方法級優先,接口級次之,全局配置再次之)2)、消費者設置優先(如果級別一樣,則消費方優先,提供方次之)--><dubbo:reference interface="com.badao.gmall.service.UserService"id="userService" timeout="5000" retries="3" version="*"></dubbo:reference></beans>

然后新建MainApplication,加載Spring配置,并調用遠程服務

package com.badao.gmall;import java.io.IOException;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.badao.gmall.service.OrderService;public class MainApplication {@SuppressWarnings("resource")public static void main(String[] args) throws IOException {ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("consumer.xml");OrderService orderService = applicationContext.getBean(OrderService.class);orderService.initOrder("1");System.out.println("調用完成....");System.in.read();}}

開始測試

參照官網快速搭建入門程序的指導:

http://dubbo.apache.org/zh-cn/docs/user/quick-start.html

搭建好服務提供者和服務消費者之后,參照上面博客搭建好zookeeper服務注冊中心后,啟動ZooKeeper服務端。

然后再參照博客搭建dubbo-admin管理控制臺程序。

啟動服務提供者的MainApplication使服務暴露。

此時刷新管理控制臺,可見此時服務提供者已經暴露。

?

然后運行服務消費者的MainApplication,遠程調用成功。

?

此時刷新管理控制臺

?

服務提供者與服務消費者各一。

代碼下載

關注公眾號:

霸道的程序猿

回復:

Dubbo入門代碼


?

?


?


?

總結

以上是生活随笔為你收集整理的Dubbo搭建HelloWorld-搭建服务提供者与服务消费者并完成远程调用(附代码下载)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。