I create a simple stan client with the below code by stan client 0.3.0:
static void Main(string[] args)
{
var cf = new ConnectionFactory();
var sf = new StanConnectionFactory();
var natsConnection = cf.CreateConnection(GetOpts());
var stanOpts = StanOptions.GetDefaultOptions();
stanOpts.ConnectTimeout = 4000;
stanOpts.NatsConn = natsConnection;
stanOpts.PubAckWait = 40000;
//stanOpts.
var stanConnection = sf.CreateConnection("test-cluster", "uniq123", stanOpts);
var watch = Stopwatch.StartNew();
while (true)
{
try
{
stanConnection.Publish("test", new byte[0x1]);
Console.WriteLine("{0}. Published message", watch.Elapsed);
}
catch (Exception e)
{
Console.WriteLine("{0} - Type:{1}. On Publish: exception message: {2}", watch.Elapsed, e.GetType(), e.Message);
}
finally
{
Thread.Sleep(1000);
}
}
}
private static Options GetOpts()
{
var opts = ConnectionFactory.GetDefaultOptions();
opts.Url = "nats://localhost:4222";
opts.AllowReconnect = true;
opts.PingInterval = 5000;
opts.MaxPingsOut = 2;
opts.MaxReconnect = Options.ReconnectForever;
opts.ReconnectWait = 1000;
opts.Timeout = 4000;
opts.ServerDiscoveredEventHandler += (sender, args) => Console.WriteLine("NATS server discovered");
opts.ReconnectedEventHandler +=
(sender, args) => Console.WriteLine( "NATS server reconnected.");
opts.ClosedEventHandler +=
(sender, args) => Console.WriteLine("NATS connection closed");
opts.DisconnectedEventHandler += (sender, args) =>
Console.WriteLine("NATS connection disconnected");
opts.AsyncErrorEventHandler +=
(sender, args) => Console.WriteLine("NATS async error: {0}, Message={1}, Subject={2}", args.Conn.ConnectedUrl,
args.Error, args.Subscription.Subject);
return opts;
}
and host the latest version NatsStreaming with docker on my machine. when I run my client it connects to the server and publishes its messages. when I stop my NatsStreaming service and start it again the nats connection reconnects to the server but StanClient still is throwing connection closed Exception. this issue removes if I downgrade my client version to 0.1.14.
Update
I resolve the problem by setting
StanOptions.NatsConnection = arg.Conn
inside reconnect Handler but I wonder why it needs such unusual action like this?
I add another sample on Issue #162
I create a simple stan client with the below code by stan client 0.3.0:
and host the latest version NatsStreaming with docker on my machine. when I run my client it connects to the server and publishes its messages. when I stop my NatsStreaming service and start it again the nats connection reconnects to the server but StanClient still is throwing connection closed Exception. this issue removes if I downgrade my client version to 0.1.14.
Update
I resolve the problem by setting
StanOptions.NatsConnection = arg.Conn
inside reconnect Handler but I wonder why it needs such unusual action like this? I add another sample on Issue #162