Exemplo n.º 1
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Usage: consumer <clientid>");
                return;
            }

            string clientId = args[0];

            var cf = new StanConnectionFactory();

            StanOptions options = StanOptions.GetDefaultOptions();

            options.NatsURL = "nats://localhost:4222";

            using (var c = cf.CreateConnection("test-cluster", clientId, options))
            {
                var opts = StanSubscriptionOptions.GetDefaultOptions();

                //opts.DeliverAllAvailable();
                //opts.StartAt(15);
                //opts.StartAt(TimeSpan.FromSeconds(10));
                //opts.StartAt(new DateTime(2019, 9, 18, 9, 0, 0));
                //opts.StartWithLastReceived();
                //opts.DurableName = "durable";

                var s = c.Subscribe("nats.streaming.demo", opts, (obj, args) =>
                {
                    string message = Encoding.UTF8.GetString(args.Message.Data);
                    Console.WriteLine($"[#{args.Message.Sequence}] {message}");
                });

                Console.WriteLine($"Consumer with client id '{clientId}' started. Press any key to quit...");
                Console.ReadKey(true);

                //s.Unsubscribe();
                c.Close();
            }
        }
        public void Subscriber(string subject, EventHandler <StanMsgHandlerArgs> handler, bool in_all = false, bool is_last = false, ulong since_seq_no = 0, DateTime?since_duration = null)
        {
            subject = $"{productID}_{subject}";
            StanSubscriptionOptions sOpts = StanSubscriptionOptions.GetDefaultOptions();

            if (in_all)
            {
                sOpts.DeliverAllAvailable();
            }
            else if (is_last)
            {
                sOpts.StartWithLastReceived();
            }
            else if (since_seq_no != 0)
            {
                sOpts.StartAt(since_seq_no);
            }
            else if (since_duration.HasValue)
            {
                sOpts.StartAt(since_duration.Value);
            }
            dicSubscription.GetOrAdd(subject, conn.Subscribe(subject, sOpts, handler));
        }
Exemplo n.º 3
0
        public void Start()
        {
            // connect to NATS
            var natsConnectionFactory = new ConnectionFactory();

            _natsConnection = natsConnectionFactory.CreateConnection("nats://localhost:4222");

            // connect to STAN
            var cf          = new StanConnectionFactory();
            var natsOptions = StanOptions.GetDefaultOptions();

            natsOptions.NatsURL = "nats://localhost:4223";
            _stanConnection     = cf.CreateConnection("test-cluster", "OrdersQueryService", natsOptions);

            // create queries subscription
            _natsConnection.SubscribeAsync("store.queries.*", QueryReceived);

            // create events subscription
            StanSubscriptionOptions stanOptions = StanSubscriptionOptions.GetDefaultOptions();

            stanOptions.DurableName = "OrdersQueryService";
            _stanConnection.Subscribe("store.events", stanOptions, EventReceived);
        }
Exemplo n.º 4
0
        static void Main()
        {
            string      serverURL = "nats://localhost:4222", clusterID = "test-cluster", clientID = "client_sub", subject = "foo_subject", queue = "foo_queue", durable = "foo_durable";
            StanOptions cOpts = StanOptions.GetDefaultOptions();

            cOpts.NatsURL = serverURL;
            using (var c = new StanConnectionFactory().CreateConnection(clusterID, clientID, cOpts))
            {
                Console.WriteLine("nats: connected serverURL='{0}', clusterID='{1}', clientID='{2}'", serverURL, clusterID, clientID);
                StanSubscriptionOptions sOpts = StanSubscriptionOptions.GetDefaultOptions();
                sOpts.DurableName = durable;
                sOpts.MaxInflight = 1;
                using (var s = c.Subscribe(subject, queue, sOpts, (sender, args) =>
                {
                    Console.WriteLine("Received seq # {0}: {1}", args.Message.Sequence, System.Text.Encoding.UTF8.GetString(args.Message.Data));
                }))
                {
                    Console.WriteLine("nats: subscribed subject='{0}', queue='{1}', durable='{2}'", subject, queue, durable);
                    Console.WriteLine("program: press <enter> to exit...");
                    Console.ReadLine();
                }
            }
        }
Exemplo n.º 5
0
        public string QueueSubscribe(string subject, string queue, StanSubscriptionOptions options, EventHandler <StanMsgHandlerArgs> cb)
        {
            IStanSubscription sub  = null;
            string            guid = Guid.NewGuid().ToString();
            var error = internalSubscribe(subject, queue, options, cb, out sub);

            // keep a copy of subscription info
            _subs[guid] = new SubRecord
            {
                subject = subject,
                queue   = queue,
                options = options,
                cb      = cb,
                sub     = sub,
            };
            if (error != null)
            {
                internalClose();
                reconnect();
            }
            // return
            return(guid);
        }
Exemplo n.º 6
0
        static void Main(string[] args)
        {
            var services = Middleware.ConfigureApp();

            var config = services.GetService <IOptions <AppConfig> >();

            var conn = services.GetService <INatsConnectionProvider>();

            var opts = StanSubscriptionOptions.GetDefaultOptions();

            opts.DurableName = $"{config.Value.App.AppName}.Durable";

            EventHandler <StanMsgHandlerArgs> eventHandler = async(sender, handlerArgs) =>
            {
                var message = System.Text.Encoding.UTF8.GetString(handlerArgs.Message.Data);
                Console.WriteLine($"Received a message: {message}");
            };

            var topicName = "bukapor.nats.topic.name";

            using (var connection = conn.GetIStanConnection())
            {
                var ev = new AutoResetEvent(false);
                using (var s = connection.Subscribe(topicName, opts, eventHandler))
                {
                    Console.WriteLine($"Connected to nats {config.Value.NatsConnection.ClusterId} running on {config.Value.NatsConnection.ConnectionUrl}."
                                      );
                    Log.Information($"Waiting on messages from {topicName}.");
                    for (int i = 0; i < 100; i++)
                    {
                        Thread.Sleep(TimeSpan.FromSeconds(1));
                        connection.Publish(topicName, Encoding.UTF8.GetBytes(i.ToString()));
                    }
                    ev.WaitOne();
                }
            }
        }
Exemplo n.º 7
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Usage: consumer <clientid>");
                return;
            }

            string clientId = args[0];

            var cf = new StanConnectionFactory();

            StanOptions options = StanOptions.GetDefaultOptions();

            options.NatsURL = "nats://localhost:4222";
            using (var c = cf.CreateConnection("test-cluster", clientId, options))
            {
                var opts = StanSubscriptionOptions.GetDefaultOptions();
                opts.StartWithLastReceived();
                Task.Run(() =>
                {
                    var s = c.Subscribe("nats.streaming.demo", opts, (obj, arguments) =>
                    {
                        string message = Encoding.UTF8.GetString(arguments.Message.Data);
                        Console.WriteLine(message);
                        c.Publish("nats.streaming.demo.client", Encoding.UTF8.GetBytes("publishing from consumer " + clientId));
                    });
                });
                Console.WriteLine($"Consumer with client id '{clientId}' started. Press any key to quit...");
                Console.ReadKey(true);

                //s.Unsubscribe();
                c.Close();
            }
            Console.ReadLine();
        }
Exemplo n.º 8
0
 /// <summary>
 /// subscribe to a channel with options
 /// </summary>
 /// <param name="subject"></param>
 /// <param name="queue"></param>
 /// <param name="options"></param>
 /// <param name="cb"></param>
 /// <returns></returns>
 public static string QueueSubscribe(string subject, string queue, StanSubscriptionOptions options, EventHandler <StanMsgHandlerArgs> cb)
 {
     return(Default.QueueSubscribe(subject, queue, options, cb));
 }
Exemplo n.º 9
0
 public string Subscribe(string subject, StanSubscriptionOptions options, EventHandler <StanMsgHandlerArgs> cb)
 {
     return(QueueSubscribe(subject, "", options, cb));
 }
Exemplo n.º 10
0
        private Dictionary <string, object> getSubLogFields(string subject, string queue, StanSubscriptionOptions options)
        {
            var fields = getConnLogFields();

            fields["subject"] = subject;
            fields["queue"]   = queue;
            if (options != null)
            {
                fields["durable"]     = options.DurableName;
                fields["maxInflight"] = options.MaxInflight;
                fields["AckWait"]     = options.AckWait;
                fields["ManualAcks"]  = options.ManualAcks;
            }
            return(fields);
        }
 public IStanSubscription SubscribeQueue(string subject, string qgroup, StanSubscriptionOptions options, EventHandler <StanMsgHandlerArgs> handler)
 {
     return(_obs.SubscribeQueue(subject, qgroup, options, handler));
 }
Exemplo n.º 12
0
 public IStanSubscription Subscribe(string subject, StanSubscriptionOptions options, EventHandler <StanMsgHandlerArgs> handler)
 {
     return(_stanSubscription = _stanClient.Subscribe(subject, options, handler));
 }