处理 -server 参数,建议在-start启动时添加

This commit is contained in:
大石头 2021-11-28 21:40:28 +08:00
parent fd62b9dd59
commit 8ce4bad94b
11 changed files with 58 additions and 63 deletions

View File

@ -22,7 +22,7 @@ namespace ClientTest
[Fact]
public void Normal()
{
var set = Stardust.Setting.Current;
var set = Stardust.StarSetting.Current;
var secret = Rand.NextString(8, true);
set.Secret = secret;

View File

@ -25,18 +25,7 @@ namespace StarAgent
{
if ("-upgrade".EqualIgnoreCase(args)) Thread.Sleep(5_000);
new MyService().Main(args);
}
}
/// <summary>服务类。名字可以自定义</summary>
internal class MyService : ServiceBase
{
public MyService()
{
ServiceName = "StarAgent";
var set = Stardust.Setting.Current;
var set = StarSetting.Current;
if (set.IsNew)
{
#if DEBUG
@ -46,15 +35,7 @@ namespace StarAgent
set.Save();
}
// 注册菜单,在控制台菜单中按 t 可以执行Test函数主要用于临时处理数据
AddMenu('s', "使用星尘", UseStarServer);
AddMenu('t', "服务器信息", ShowMachineInfo);
AddMenu('w', "测试微服务", UseMicroService);
MachineInfo.RegisterAsync();
// 处理 -server 参数
var args = Environment.GetCommandLineArgs();
// 处理 -server 参数,建议在-start启动时添加
if (args != null && args.Length > 0)
{
for (var i = 0; i < args.Length; i++)
@ -66,11 +47,37 @@ namespace StarAgent
set.Server = addr;
set.Save();
WriteLog("服务端修改为:{0}", addr);
XTrace.WriteLine("服务端修改为:{0}", addr);
}
}
}
new MyService
{
StarSetting = set,
AgentSetting = Setting.Current
}.Main(args);
}
}
/// <summary>服务类。名字可以自定义</summary>
internal class MyService : ServiceBase
{
public StarSetting StarSetting { get; set; }
public StarAgent.Setting AgentSetting { get; set; }
public MyService()
{
ServiceName = "StarAgent";
// 注册菜单,在控制台菜单中按 t 可以执行Test函数主要用于临时处理数据
AddMenu('s', "使用星尘", UseStarServer);
AddMenu('t', "服务器信息", ShowMachineInfo);
AddMenu('w', "测试微服务", UseMicroService);
MachineInfo.RegisterAsync();
// 定时重启
var set2 = NewLife.Agent.Setting.Current;
if (set2.AutoRestart == 0)
@ -90,12 +97,12 @@ namespace StarAgent
public void StartClient()
{
var server = Stardust.Setting.Current.Server;
var server = StarSetting.Server;
if (server.IsNullOrEmpty()) return;
WriteLog("初始化服务端地址:{0}", server);
var set = Setting.Current;
var set = AgentSetting;
var client = new StarClient(server)
{
Code = set.Code,
@ -135,7 +142,7 @@ namespace StarAgent
{
if (_factory == null)
{
var server = Stardust.Setting.Current.Server;
var server = StarSetting.Server;
if (!server.IsNullOrEmpty()) _factory = new StarFactory(server, "StarAgent", null);
}
}
@ -157,7 +164,7 @@ namespace StarAgent
/// </remarks>
protected override void StartWork(String reason)
{
var set = Setting.Current;
var set = AgentSetting;
// 应用服务管理
_Manager = new ServiceManager
@ -182,6 +189,7 @@ namespace StarAgent
Service = this,
Host = Host,
Manager = _Manager,
Setting = StarSetting,
Log = XTrace.Log
}, null);
@ -232,7 +240,7 @@ namespace StarAgent
protected override void DoCheck(Object data)
{
// 支持动态更新
_Manager.Services = Setting.Current.Services;
_Manager.Services = AgentSetting.Services;
base.DoCheck(data);
}
@ -269,8 +277,7 @@ namespace StarAgent
var client = _Client;
// 运行过程中可能改变配置文件的通道
var set = Setting.Current;
var channel = set.Channel;
var channel = AgentSetting.Channel;
var ug = new Upgrade { Log = XTrace.Log };
// 去除多余入口文件
@ -320,15 +327,14 @@ namespace StarAgent
{
base.ShowMenu();
var set = Stardust.Setting.Current;
var set = StarSetting;
if (!set.Server.IsNullOrEmpty()) Console.WriteLine("服务端:{0}", set.Server);
Console.WriteLine();
}
public void UseStarServer()
{
var set = Stardust.Setting.Current;
var set = StarSetting;
if (!set.Server.IsNullOrEmpty()) Console.WriteLine("服务端:{0}", set.Server);
Console.WriteLine("请输入新的服务端:");

View File

@ -26,6 +26,9 @@ namespace StarAgent
/// <summary>本地应用服务管理</summary>
public ServiceManager Manager { get; set; }
/// <summary>星尘设置</summary>
public StarSetting Setting { get; set; }
#endregion
#region
@ -41,7 +44,7 @@ namespace StarAgent
var fileName = p.MainModule.FileName;
var args = Environment.CommandLine.TrimStart(Path.ChangeExtension(fileName, ".dll")).Trim();
var set = Stardust.Setting.Current;
var set = Setting;
// 使用对方送过来的星尘服务端地址
if (set.Server.IsNullOrEmpty() && !info.Server.IsNullOrEmpty())
{

View File

@ -37,7 +37,7 @@ namespace StarAgent
var fileName = p.MainModule.FileName;
var args = Environment.CommandLine.TrimStart(Path.ChangeExtension(fileName, ".dll")).Trim();
var set = Stardust.Setting.Current;
var set = StarSetting.Current;
// 使用对方送过来的星尘服务端地址
if (set.Server.IsNullOrEmpty() && !info.Server.IsNullOrEmpty())
{

View File

@ -71,7 +71,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
try
{
if (address.IsNullOrEmpty()) address = Stardust.Setting.Current.ServiceAddress;
if (address.IsNullOrEmpty()) address = Stardust.StarSetting.Current.ServiceAddress;
if (address.IsNullOrEmpty())
{
var feature = app.ServerFeatures.Get<IServerAddressesFeature>();

View File

@ -94,8 +94,6 @@ namespace Stardust.Server
var tracer = app.ApplicationServices.GetRequiredService<ITracer>();
using var span = tracer?.NewSpan(nameof(Configure));
var set = Stardust.Setting.Current;
// 调整应用表名
FixAppTableName();

View File

@ -28,7 +28,7 @@ namespace Stardust
/// <summary>本地服务端地址</summary>
public String Server { get => _local?.Server; set => _local.Server = value; }
private AgentInfo _local;
private readonly AgentInfo _local;
private ApiClient _client;
#endregion
@ -41,7 +41,7 @@ namespace Stardust
var fileName = p.MainModule.FileName;
var args = Environment.CommandLine.TrimStart(Path.ChangeExtension(fileName, ".dll")).Trim();
var set = Stardust.Setting.Current;
var set = StarSetting.Current;
_local = new AgentInfo
{
@ -66,7 +66,7 @@ namespace Stardust
Log = XTrace.Log,
};
var set = Setting.Current;
var set = StarSetting.Current;
if (set.Debug) _client.EncoderLog = XTrace.Log;
}

View File

@ -48,7 +48,7 @@ namespace Stardust.Monitors
/// <summary>实例化</summary>
public StarTracer()
{
var set = Setting.Current;
var set = StarSetting.Current;
AppId = set.AppKey;
//Secret = set.Secret;
Period = set.TracerPeriod;
@ -83,7 +83,7 @@ namespace Stardust.Monitors
};
Client = http;
var set = Setting.Current;
var set = StarSetting.Current;
if (!AppId.IsNullOrEmpty() && !set.Secret.IsNullOrEmpty())
http.Filter = new TokenHttpFilter { UserName = AppId, Password = set.Secret };
}
@ -149,7 +149,7 @@ namespace Stardust.Monitors
// 保存到配置文件
if (rs.Period > 0 || rs.MaxSamples > 0 | rs.MaxErrors > 0)
{
var set = Setting.Current;
var set = StarSetting.Current;
set.TracerPeriod = Period;
set.MaxSamples = MaxSamples;
set.MaxErrors = MaxErrors;
@ -206,7 +206,7 @@ namespace Stardust.Monitors
/// <summary>全局注入</summary>
public void AttachGlobal()
{
DefaultTracer.Instance = this;
Instance = this;
ApiHelper.Tracer = this;
#if NET5_0_OR_GREATER
@ -246,7 +246,7 @@ namespace Stardust.Monitors
{
if (server.IsNullOrEmpty())
{
var set = Setting.Current;
var set = StarSetting.Current;
server = set.Server;
}
if (server.IsNullOrEmpty())

View File

@ -29,7 +29,7 @@ namespace Stardust
/// <summary>实例化</summary>
public ServiceManager()
{
var data = NewLife.Setting.Current.DataPath;
var data = Setting.Current.DataPath;
_services = new CsvDb<ProcessInfo>((x, y) => x.Name == y.Name) { FileName = data.CombinePath("Service.csv") };
_services.Remove(e => e.UpdateTime.AddDays(1) < DateTime.Now);

View File

@ -94,7 +94,7 @@ namespace Stardust
_client = new ApiHttpClient(Server) { Filter = _tokenFilter };
var set = Setting.Current;
var set = StarSetting.Current;
if (set.Debug) _client.Log = XTrace.Log;
}
@ -144,7 +144,7 @@ namespace Stardust
}
// 如果探测不到本地应用,则使用配置
var set = Setting.Current;
var set = StarSetting.Current;
if (Server.IsNullOrEmpty()) Server = set.Server;
if (AppId.IsNullOrEmpty()) AppId = set.AppKey;
if (Secret.IsNullOrEmpty()) Secret = set.Secret;

View File

@ -1,14 +1,12 @@
using System;
using System.ComponentModel;
using NewLife;
using NewLife.Common;
using NewLife.Configuration;
namespace Stardust
{
/// <summary>星尘客户端配置</summary>
[Config("Star")]
public class Setting : Config<Setting>
public class StarSetting : Config<StarSetting>
{
#region
/// <summary>调试开关。默认true</summary>
@ -43,15 +41,5 @@ namespace Stardust
[Description("最大异常采样数。采样周期内最多只记录指定数量的异常事件默认10")]
public Int32 MaxErrors { get; set; } = 10;
#endregion
#region
///// <summary>加载时</summary>
//protected override void OnLoaded()
//{
// if (AppKey.IsNullOrEmpty()) AppKey = SysConfig.Current.Name;
// base.OnLoaded();
//}
#endregion
}
}
}