檢視JMS微服務線上情況,並自動生成微服務客戶端程式碼
阿新 • • 發佈:2020-12-09
連結:https://pan.baidu.com/s/1neWdJlZD9-IXcjNP5sfR7w
提取碼:6666
在網盤裡,下載ServiceStatusViewer工具,解壓後,修改appsettings.json檔案裡面的閘道器地址,然後執行ServiceStatusViewer工具,即可顯示閘道器的線上微服務
也可以用命令ServiceStatusViewer.exeappsettings2.json 的方式,指定使用某個配置檔案啟動此工具
如果線上的微服務是Debug模式,可以點選【獲取客戶端程式碼】,直接生成該微服務的客戶端訪問程式碼。
生成的客戶端程式碼大概如下格式:
//------------------------------------------------------------------------------// <auto-generated> // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ // GetPositionMode 獲取持倉模式// GetUserAccount 獲取使用者資金資訊 namespace DemoSys.WebApi.MicroServices { using JMS; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; [InvokerInfo("UserAccountService")] public class UserAccountService : IImplInvoker {protected JMS.IMicroService _microService; public UserAccountService(JMS.IMicroService microService) { this._microService = microService; } /// <summary> /// 獲取持倉模式 /// </summary> /// <param name="userId"></param> /// <returns></returns> public virtual TradeSystem.DBModels.MoneyAccount_PositionTypeEnum GetPositionMode(long userId) { return this._microService.Invoke<TradeSystem.DBModels.MoneyAccount_PositionTypeEnum>("GetPositionMode", userId); } /// <summary> /// 獲取持倉模式 /// </summary> /// <param name="userId"></param> /// <returns></returns> public virtual Task<TradeSystem.DBModels.MoneyAccount_PositionTypeEnum> GetPositionModeAsync(long userId) { return this._microService.InvokeAsync<TradeSystem.DBModels.MoneyAccount_PositionTypeEnum>("GetPositionMode", userId); } /// <summary> /// 獲取使用者資金資訊 /// </summary> /// <param name="userid"></param> /// <param name="coin"></param> /// <returns></returns> public virtual TradeSystem.DBModels.MoneyAccount GetUserAccount(long userid, string coin) { return this._microService.Invoke<TradeSystem.DBModels.MoneyAccount>("GetUserAccount", userid, coin); } /// <summary> /// 獲取使用者資金資訊 /// </summary> /// <param name="userid"></param> /// <param name="coin"></param> /// <returns></returns> public virtual Task<TradeSystem.DBModels.MoneyAccount> GetUserAccountAsync(long userid, string coin) { return this._microService.InvokeAsync<TradeSystem.DBModels.MoneyAccount>("GetUserAccount", userid, coin); } } }
這樣,客戶端要訪問微服務,則可以這麼寫
using (var client = new MicroServiceClient()) { var service = client.GetMicroService<MicroServices.UserAccountService>(); return service.GetUserAccount(this.UserInfo.userid , "USDT"); }
MicroServiceClient是JMSClient的派生類,簡單封裝一下,用起來方便一些
public class MicroServiceClient : JMSClient { static NetAddress[] GatewayAddresses; static IConfiguration Configuration; static MicroServiceClient() { var builder = new ConfigurationBuilder(); builder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); Configuration = builder.Build(); ConfigurationChangeCallback(null); } static void ConfigurationChangeCallback(object p) { Configuration.GetReloadToken().RegisterChangeCallback(ConfigurationChangeCallback, null); GatewayAddresses = Configuration.GetSection("Gateways").Get<NetAddress[]>(); } public MicroServiceClient():base(GatewayAddresses , null , Global.ServiceProvider.GetService<ILogger<JMSClient>>()) { } }