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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring整合dubbo服务消费和发现入门示例

發(fā)布時(shí)間:2024/9/30 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring整合dubbo服务消费和发现入门示例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 準(zhǔn)備
  • 公共接口部分
  • 服務(wù)提供
  • 服務(wù)消費(fèi)

準(zhǔn)備

1.啟動(dòng)zookeeper

目錄

其中interface包下是公共接口
測(cè)試預(yù)期結(jié)果:
訂單服務(wù)web模塊在A服務(wù)器,用戶服務(wù)模塊在B服務(wù)器,A可以遠(yuǎn)程調(diào)用B的功能。

公共接口部分

public class UserAddress implements Serializable {private Integer id;private String userAddress; //用戶地址private String userId; //用戶idprivate String consignee; //收貨人private String phoneNum; //電話號(hào)碼private String isDefault; //是否為默認(rèn)地址 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;}//省略get set方法} public interface OrderService {/*** 初始化訂單* @param userId*/public List<UserAddress> initOrder(String userId);} public interface UserService {/*** 按照用戶id返回所有的收貨地址* @param userId* @return*/public List<UserAddress> getUserAddressList(String userId);}

然后mvn package進(jìn)行打包,可以看到target目錄下生成的jar包:

服務(wù)提供

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、指定當(dāng)前服務(wù)/應(yīng)用的名字(同樣的服務(wù)名字相同,不要和別的服務(wù)同名) --><dubbo:application name="user-service-provider"></dubbo:application><!-- 2、指定注冊(cè)中心的位置 --><!-- <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry> --><dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"></dubbo:registry><!-- 3、指定通信規(guī)則(通信協(xié)議?通信端口) --><dubbo:protocol name="dubbo" port="20882"></dubbo:protocol><!-- 4、暴露服務(wù) ref:指向服務(wù)的真正的實(shí)現(xiàn)對(duì)象 --><dubbo:service interface="com.dubbo.service.UserService"ref="userServiceImpl01" timeout="1000" version="1.0.0"><dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method></dubbo:service><!--統(tǒng)一設(shè)置服務(wù)提供方的規(guī)則 --><dubbo:provider timeout="1000"></dubbo:provider><!-- 服務(wù)的實(shí)現(xiàn) --><bean id="userServiceImpl01" class="com.dubbo.bean.service.impl.UserServiceImpl"></bean><dubbo:service interface="com.dubbo.service.UserService"ref="userServiceImpl02" timeout="1000" version="2.0.0"><dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method></dubbo:service><bean id="userServiceImpl02" class="com.dubbo.bean.service.impl.UserServiceImpl2"></bean><!-- 連接監(jiān)控中心 --><dubbo:monitor protocol="registry"></dubbo:monitor></beans> public class UserServiceImpl implements UserService {@Overridepublic List<UserAddress> getUserAddressList(String userId) {System.out.println("UserServiceImpl.....old...");// TODO Auto-generated method stubUserAddress address1 = new UserAddress(1, "北京市昌平區(qū)宏福科技園綜合樓3層", "1", "李老師", "010-56253825", "Y");UserAddress address2 = new UserAddress(2, "深圳市寶安區(qū)西部硅谷大廈B座3層(深圳分校)", "1", "王老師", "010-56253825", "N");/*try {Thread.sleep(4000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}*/return Arrays.asList(address1,address2);}} public class UserServiceImpl2 implements UserService {@Overridepublic List<UserAddress> getUserAddressList(String userId) {System.out.println("UserServiceImpl.....new...");// TODO Auto-generated method stubUserAddress address1 = new UserAddress(1, "北京市昌平區(qū)宏福科技園綜合樓3層", "1", "李老師", "010-56253825", "Y");UserAddress address2 = new UserAddress(2, "深圳市寶安區(qū)西部硅谷大廈B座3層(深圳分校)", "1", "王老師", "010-56253825", "N");return Arrays.asList(address1,address2);}}

主啟動(dòng)類:

public class MainApplication {public static void main(String[] args) throws IOException {ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("provider.xml");ioc.start();System.in.read();}}

服務(wù)消費(fèi)

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.dubbo.bean.service.impl"></context:component-scan><dubbo:application name="order-service-consumer"></dubbo:application><dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry><!-- 配置本地存根--><!--聲明需要調(diào)用的遠(yuǎn)程服務(wù)的接口;生成遠(yuǎn)程服務(wù)代理 --><!-- 1)、精確優(yōu)先 (方法級(jí)優(yōu)先,接口級(jí)次之,全局配置再次之)2)、消費(fèi)者設(shè)置優(yōu)先(如果級(jí)別一樣,則消費(fèi)方優(yōu)先,提供方次之)--><!-- timeout="0" 默認(rèn)是1000ms--><!-- retries="":重試次數(shù),不包含第一次調(diào)用,0代表不重試--><!-- 冪等(設(shè)置重試次數(shù))【查詢、刪除、修改】、非冪等(不能設(shè)置重試次數(shù))【新增】 --><dubbo:reference interface="com.dubbo.service.UserService"id="userService" timeout="5000" retries="3" version="*"><!-- <dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method> --></dubbo:reference><!-- 配置當(dāng)前消費(fèi)者的統(tǒng)一規(guī)則:所有的服務(wù)都不檢查 --><dubbo:consumer check="false" timeout="5000"></dubbo:consumer><dubbo:monitor protocol="registry"></dubbo:monitor><!-- <dubbo:monitor address="127.0.0.1:7070"></dubbo:monitor> --></beans> /*** 1、將服務(wù)提供者注冊(cè)到注冊(cè)中心(暴露服務(wù))* 1)、導(dǎo)入dubbo依賴(2.6.2)\操作zookeeper的客戶端(curator)* 2)、配置服務(wù)提供者* * 2、讓服務(wù)消費(fèi)者去注冊(cè)中心訂閱服務(wù)提供者的服務(wù)地址* @author lfy**/ @Service public class OrderServiceImpl implements OrderService {@AutowiredUserService userService;@Overridepublic 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;}}

這里 @Autowired導(dǎo)入的UserService 是公共接口中的UserService

主啟動(dòng)類

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("調(diào)用完成....");System.in.read();}}

啟動(dòng)服務(wù)提供者再啟動(dòng)服務(wù)消費(fèi)者結(jié)果:



訪問initOrder請(qǐng)求,會(huì)調(diào)用UserService獲取用戶地址;
調(diào)用成功。說明我們order已經(jīng)可以調(diào)用遠(yuǎn)程的UserService了;

總結(jié)

以上是生活随笔為你收集整理的spring整合dubbo服务消费和发现入门示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。