是否有一种简单的方法来捕获到C#中的NATS连接的断开事件

问题描述 投票:0回答:1

我有一个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);
        }
    }
c# event-handling nats.io
1个回答
0
投票

我设法解决了这个问题。相当简单。我下载了NATS Client的最新版本,并且上面的代码有效,并且触发时触发了相关代码。

© www.soinside.com 2019 - 2024. All rights reserved.