feat(lmxproxy): replace subscribe/unsubscribe health probe with persistent subscription
The old probe did a subscribe-read-unsubscribe cycle every 5 seconds to check connection health. This created unnecessary churn and didn't detect the failure mode where long-lived subscriptions silently stop receiving COM callbacks (e.g. stalled STA message pump). The new approach keeps a persistent subscription on the health check tag and forces reconnect if no value update arrives within a configurable threshold (ProbeStaleThresholdMs, default 5s). Also adds STA message pump debug logging (5-min heartbeat with message counters) and fixes log file path resolution for Windows services. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -17,7 +17,10 @@ namespace ZB.MOM.WW.LmxProxy.Host
|
||||
.AddEnvironmentVariables()
|
||||
.Build();
|
||||
|
||||
// 2. Configure Serilog
|
||||
// 2. Set working directory to exe location so relative log paths resolve correctly
|
||||
Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;
|
||||
|
||||
// 3. Configure Serilog
|
||||
Log.Logger = new LoggerConfiguration()
|
||||
.ReadFrom.Configuration(configuration)
|
||||
.Enrich.FromLogContext()
|
||||
@@ -27,11 +30,11 @@ namespace ZB.MOM.WW.LmxProxy.Host
|
||||
|
||||
try
|
||||
{
|
||||
// 3. Bind configuration
|
||||
// 4. Bind configuration
|
||||
var config = new LmxProxyConfiguration();
|
||||
configuration.Bind(config);
|
||||
|
||||
// 4. Configure Topshelf
|
||||
// 5. Configure Topshelf
|
||||
var exitCode = HostFactory.Run(host =>
|
||||
{
|
||||
host.UseSerilog();
|
||||
|
||||
Reference in New Issue
Block a user