我有一个C#应用程序,该应用程序连接到NATS服务以发送和接受NATS消息。一段时间以来运作良好。但是,我需要建立一些逻辑,即如果NATS服务停止了,我将采取行动让用户知道我们无法发送或接收消息。我查看了互联网上的示例并进行了相应的应用,但是在测试时,我没有看到任何响应,好像事件没有被触发一样。当我停止NATS服务时,我希望事件触发并显示一条消息。谁能告诉我我所缺少的吗?
private void OpenNatsConnections()
{
LocalLog("Opening connection to Nats");
// Setup connection options
Options Opts = ConnectionFactory.GetDefaultOptions();
Opts.Url = appSettings.GetNatsUrl();
Opts.User = appSettings.NATSUsername;
Opts.Password = appSettings.NATSPassword;
Opts.AsyncErrorEventHandler += (sender, args) =>
{
LocalLog("AsyncErrorEventHandler");
};
Opts.ClosedEventHandler += (sender, args) =>
{
LocalLog("ClosedEventHandler");
};
Opts.DisconnectedEventHandler += (sender, args) =>
{
LocalLog("DisconnectedEventHandler");
};
// Open Nats connection, assign event handeler and subscribe to listening channel
try
{
NATSConnection = new ConnectionFactory().CreateConnection(Opts);
AsyncNATSMessageHandler = (sender, args) =>
{
string MessageData = Encoding.ASCII.GetString(args.Message.Data);
DetermineMessageType(MessageData, args.Message.Reply);
};
SubscribeToNATS();
LocalLog("Connected to Nats");
}
catch (Exception e)
{
LocalLog("Critical!! Connection to NATS failed! Error Message - " + e.Message);
}
}
我设法解决了这个问题。相当简单。我下载了NATS Client的最新版本,并且上面的代码有效,并且触发时触发了相关代码。