W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
使用 Triple 協(xié)議 + hessian2 序列化方案
可參考Dubbo-go 3.0 泛化調(diào)用文檔
package org.apache.dubbo; import java.io.Serializable; import java.util.Date; public class User implements Serializable { private String id; private String name; private int age; private Date time = new Date(); }
package org.apache.dubbo; import java.util.ArrayList; import java.util.List; import java.util.Map; //import org.apache.dubbo.rpc.filter.GenericFilter; public interface UserProvider { User GetUser1(String userId); }
此處展示以 API 的形式構(gòu)造泛化接口引用
// 初始化 Reference 配置 refConf := config.NewReferenceConfigBuilder(). SetInterface("org.apache.dubbo.UserProvider"). SetRegistryIDs("zk"). SetProtocol(tripleConst.TRIPLE). SetGeneric(true). SetSerialization("hessian2"). Build() // 構(gòu)造 Root 配置,引入注冊中心模塊 rootConfig := config.NewRootConfigBuilder(). AddRegistry("zk", config.NewRegistryConfigWithProtocolDefaultPort("zookeeper")). Build() // Reference 配置初始化,因?yàn)樾枰褂米灾行倪M(jìn)行服務(wù)發(fā)現(xiàn),需要傳入經(jīng)過配置的 rootConfig if err := refConf.Init(rootConfig); err != nil{ panic(err) } // 泛化調(diào)用加載、服務(wù)發(fā)現(xiàn) refConf.GenericLoad(appName) time.Sleep(time.Second) // 發(fā)起泛化調(diào)用 resp, err := refConf.GetRPCService().(*generic.GenericService).Invoke( context.TODO(), "getUser1", []string{"java.lang.String"}, []hessian.Object{"A003"}, ) if err != nil { panic(err) } logger.Infof("GetUser1(userId string) res: %+v", resp)
GenericService 的 Invoke 方法包括三個(gè)參數(shù):context.Context, []string, []hessian.Object,
其中第二個(gè)參數(shù)為對應(yīng)參數(shù)的 Java 類名,例如java.lang.String、org.apache.dubbo.User,第三個(gè)參數(shù)為參數(shù)列表,hessian.Object 即為 interface。第二、第三個(gè)參數(shù)應(yīng)與方法簽名一致,按順序?qū)?yīng)。
獲得map結(jié)構(gòu)的返回結(jié)果
INFO cmd/client.go:89 GetUser1(userId string) res: map[age:48 class:org.apache.dubbo.User id:A003 name:Joe sex:MAN time:2021-10-04 14:03:03.37 +0800 CST]
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: