DUBBO 客戶端接入
更新時間:
網關提供客戶端 DUBBO Demo 代碼供用戶參考,下載客戶端 Demo后,DUBBO Demo 代碼位置為:com/alipay/gateway/web/test/usercase/mainchain/dubbo/DubboClientServiceTest.java。
操作步驟
編寫后端 Server。
例如:
@Controller @RequestMapping("/springmvc/test") public class PostMvcServerController { /** * 測試場景: 沒有參數的測試 * * @return */ @RequestMapping(value = "/param/noParam", method = RequestMethod.POST) @ResponseBody public Map<String, String> hello() { Map<String, String> map = new HashMap<>(); map.put("post", "hello"); System.out.println(JSONObject.toJSONString(map)); return map; } }
登錄網關控制臺。
創建系統集群,并使其指向本地后端 Server。
重要如果此處系統集群的認證方式選擇了 密鑰,由于網關目前僅提供 JavaSDK,其他語言類型需用戶自行實現。
創建分組和 API,指定前端的調用方式和后端的轉發方式。
如下圖所示:
重要DUBBO 類型的 API 暫不支持簽名認證和數據加密等需要客戶端配置的需求。
編寫調用方代碼。
編寫調用代碼
package com.alipay.gateway.facade.dubbo; public interface GatewayDubbo2HttpService { Map<String, String> stringParam(String param); }
編寫 DUBBO Reference
<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <!-- 消費方應用名,用于計算依賴關系,不是匹配條件,不要與提供方一樣 --> <dubbo:application name="consumer-of-helloworld-app" /> <!-- 協議必須是fastjson序列化 --> <dubbo:protocol name="dubbo" serialization="fastjson" /> <!-- 生成遠程服務代理,可以和本地bean一樣使用demoService url=網關ip:20888 --> <dubbo:reference id="gatewayDubbo2HttpService" interface="com.alipay.gateway.facade.dubbo.GatewayDubbo2HttpService" timeout="100000" protocol="dubbo" url="網關ip:20888?serialization=fastjson" version="1.0.0" > </dubbo:reference> </beans>
DUBBO 調用
從 API 詳情獲取分組 ID 并寫入
x-mosng-host
。public class DubboClientServiceTest extends AbstractTestBase { @Test public void dubbo2HttpStringParam() { ApplicationContext context = new ClassPathXmlApplicationContext( "classpath:META-INF/gateway-test-client/dubbo-consumer.xml"); RpcContext.getContext().setAttachment("x-mosng-host", "lv51bpe4v3kiy6nn"); GatewayDubbo2HttpService gatewayDubbo2HttpService = (GatewayDubbo2HttpService)context.getBean("gatewayDubbo2HttpService"); // 獲取遠程服務代理 //注意:入參需要和在網關頁面上配置的類型一致,且響應參數需要和dubbo對齊否則會報錯 Map<String, String> dubbo2HttpStringParam = gatewayDubbo2HttpService.stringParam("aaa"); System.out.println(JSON.toJSONString(dubbo2HttpStringParam)); // 顯示調用結果 } }
發起請求。
調用結果如下:
文檔內容是否對您有幫助?