public void EnsureAutoUnsubscribeForAsyncSub() { var subject = "0be903f6c9c14c10973e78ce03ad47e1"; var recieved = new ConcurrentQueue <Msg>(); AsyncContext.Run(async() => { using (NATSServer.CreateFastAndVerify(Context.Server1.Port)) { using (var sync = TestSync.SingleActor()) { using (var cn = Context.ConnectionFactory.CreateConnection(Context.Server1.Url)) { using (var sub = cn.SubscribeAsync(subject, (_, m) => { recieved.Enqueue(m.Message); sync.SignalComplete(); })) { sub.AutoUnsubscribe(1); cn.Publish(subject, new byte[0]); cn.Publish(subject, new byte[0]); sync.WaitForAll(); await Task.Delay(100); Assert.Equal(1, sub.Delivered); } } Assert.Single(recieved); } } }); }
public void EnsureRequestAsyncResponder() { var subject = "6f7c177f910c4ce587d886cc7212a00f"; var replies = new ConcurrentQueue <Msg>(); AsyncContext.Run(async() => { using (NATSServer.CreateFastAndVerify(Context.Server1.Port)) { using (var cn = Context.ConnectionFactory.CreateConnection(Context.Server1.Url)) { using (cn.SubscribeAsync(subject, (_, m) => m.Message.Respond(m.Message.Data))) { for (var i = 0; i < 5; i++) { replies.Enqueue(await cn.RequestAsync(subject, new[] { (byte)i })); } } } Assert.Equal(5, replies.Count); } }); }
public void EnsurePubSubWithAsyncHandler() { var subject = "236c9af7eae044f585973503e9803f4a"; var recieved = new ConcurrentQueue <Msg>(); AsyncContext.Run(() => { using (NATSServer.CreateFastAndVerify(Context.Server1.Port)) { using (var sync = TestSync.SingleActor()) { using (var cn = Context.ConnectionFactory.CreateConnection(Context.Server1.Url)) { using (cn.SubscribeAsync(subject, (_, m) => { recieved.Enqueue(m.Message); if (recieved.Count == 5) { sync.SignalComplete(); } })) { for (var i = 0; i < 5; i++) { cn.Publish(subject, new[] { (byte)i }); } sync.WaitForAll(); } } Assert.Equal(5, recieved.Count); } } }); }
public void EnsureRequestResponder() { var subject = "751182b093ea42b68d79b69353bf6266"; var replies = new ConcurrentQueue <Msg>(); AsyncContext.Run(() => { using (NATSServer.CreateFastAndVerify(Context.Server1.Port)) { using (var cn = Context.ConnectionFactory.CreateConnection(Context.Server1.Url)) { using (cn.SubscribeAsync(subject, (_, m) => m.Message.Respond(m.Message.Data))) { for (var i = 0; i < 5; i++) { replies.Enqueue(cn.Request(subject, new[] { (byte)i })); } } } Assert.Equal(5, replies.Count); } }); }