Esempio n. 1
0
        public void Start(IMessageHandlerCallback callback)
        {
            _callback = callback;

            Policy
            .Handle <Exception>()
            .WaitAndRetry(9, r => TimeSpan.FromSeconds(5), (ex, ts) => { Console.Error.WriteLine("Error connecting to RabbitMQ. Retrying in 5 sec."); })
            .Execute(() =>
            {
                var factory = new ConnectionFactory()
                {
                    Uri = _uri
                };
                _connection = factory.CreateConnection();
                _model      = _connection.CreateModel();
                _model.ExchangeDeclare(_exchange, "fanout", durable: true, autoDelete: false);
                _model.QueueDeclare(_queuename, durable: true, autoDelete: false, exclusive: false);
                _model.QueueBind(_queuename, _exchange, "");
                _consumer           = new EventingBasicConsumer(_model);
                _consumer.Received += Consumer_Received;
                _consumerTag        = _model.BasicConsume(_queuename, false, _consumer);

                Console.WriteLine("Connected to RabbitMQ");
            });
        }
Esempio n. 2
0
        public void Start(IMessageHandlerCallback callback)
        {
            _callback = callback;

            Policy
            .Handle <Exception>()
            .WaitAndRetry(9, r => TimeSpan.FromSeconds(5), (ex, ts) => {  })
            .Execute(() =>
            {
                var factory = new ConnectionFactory()
                {
                    HostName = _host, DispatchConsumersAsync = true
                };
                _connection = factory.CreateConnection();
                _model      = _connection.CreateModel();
                _model.ExchangeDeclare(_exchange, "topic", durable: true, autoDelete: false);
                _model.QueueDeclare(_queuename, durable: true, autoDelete: false, exclusive: false);

                _routingKeys.ForEach(routingkey =>
                {
                    _model.QueueBind(_queuename, _exchange, routingKey: routingkey);
                });

                _consumer           = new AsyncEventingBasicConsumer(_model);
                _consumer.Received += Consumer_Received;
                _consumerTag        = _model.BasicConsume(_queuename, false, _consumer);
            });
        }
 public void Start(IMessageHandlerCallback callback)
 {
     _callback = callback;
     Console.WriteLine($"Started handler with:{_exchange},{_callback},{_queuename},{_routingKey}");
     Policy
     .Handle <Exception>()
     .WaitAndRetry(9, r => TimeSpan.FromSeconds(5), (ex, ts) =>
     {
         Console.WriteLine("Error connecting to RabbitMQ.Retrying in 5 sec.");
     })
     .Execute(() =>
     {
         var factory = new ConnectionFactory()
         {
             HostName = _host, UserName = _username, Password = _password, DispatchConsumersAsync = true
         };
         _connection = factory.CreateConnection();
         _model      = _connection.CreateModel();
         _model.ExchangeDeclare(_exchange, "fanout", durable: true, autoDelete: false);
         _model.QueueDeclare(_queuename, durable: true, autoDelete: false, exclusive: false);
         _model.QueueBind(_queuename, _exchange, _routingKey);
         _consumer           = new AsyncEventingBasicConsumer(_model);
         _consumer.Received += Consumer_Received;
         _consumerTag        = _model.BasicConsume(_queuename, false, _consumer);
     });
 }
Esempio n. 4
0
        public void Start(IMessageHandlerCallback callback)
        {
            _callback = callback;

            _queueClient = new QueueClient(_endpoint, _queuename, ReceiveMode.PeekLock);

            try
            {
                // Register a OnMessage callback
                _queueClient.RegisterMessageHandler(
                    async(message, token) =>
                {
                    if (await HandleEvent(message))
                    {
                        await _queueClient.CompleteAsync(message.SystemProperties.LockToken);
                    }
                },
                    new MessageHandlerOptions(exceptionReceivedEventArgs =>
                {
                    Console.WriteLine($"Message handler encountered an exception {exceptionReceivedEventArgs.Exception}.");
                    return(Task.CompletedTask);
                })
                {
                    MaxConcurrentCalls = 1, AutoComplete = false
                });
            }
            catch (Exception exception)
            {
                Console.WriteLine($"{DateTime.Now} > Exception: {exception.Message}");
            }
        }
        static void Main(string[] args)
        {
            CompositeResolver.RegisterAndSetAsDefault(new[]
            {
                EnumResolver.UnderlyingValue,
                StandardResolver.ExcludeNullCamelCase
            });

            // Get the message handler
            IMessageHandler         messageHandler         = ServiceProvider.GetService <IMessageHandler>();
            IMessageHandlerCallback messageHandlerCallback = ServiceProvider.GetService <IMessageHandlerCallback>();

            try
            {
                Console.WriteLine("Starting handler");
                messageHandler.Start(messageHandlerCallback);
                Console.WriteLine("Handler started");
            }
            catch (Exception ex)
            {
                // Error during staring
                Console.Error.WriteLine($"Error during starting message handler, message: {ex.Message}");
                Environment.Exit(1);
            }

            Console.WriteLine("Security service started.");
            while (true)
            {
                Thread.Sleep(10000);
            }
        }
Esempio n. 6
0
        public void Start(IMessageHandlerCallback callback)
        {
            this.callback = callback;

            Policy
            .Handle <Exception>()
            .WaitAndRetry(10, r => TimeSpan.FromSeconds(5), (exeption, timeSpan) =>
            {
                Log.Error("Error connecting to RabbitMQ. Retrying in 10 seconds.");
            })
            .Execute(SetupConnection);
        }
Esempio n. 7
0
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            CompositeResolver.RegisterAndSetAsDefault(new[]
            {
                EnumResolver.UnderlyingValue,
                StandardResolver.ExcludeNullCamelCase
            });

            // Get the message handler
            IMessageHandler         messageHandler         = app.ApplicationServices.GetService <IMessageHandler>();
            IMessageHandlerCallback messageHandlerCallback = app.ApplicationServices.GetService <IMessageHandlerCallback>();

            DIHelper.OnServicesSetup(app.ApplicationServices);

            app.UseMvc();

            Task.Run(() =>
            {
                try
                {
                    Console.WriteLine("Starting handler");
                    messageHandler.Start(messageHandlerCallback);
                    Console.WriteLine("Handler started");
                }
                catch (Exception ex)
                {
                    // Error during staring
                    Console.Error.WriteLine($"Error during starting message handler, message: {ex.Message}");
                    Environment.Exit(1);
                }

                while (true)
                {
                    Thread.Sleep(10000);
                }
            });

            Console.WriteLine("Invoice service started.");
        }
Esempio n. 8
0
        public void Start(IMessageHandlerCallback callback)
        {
            //throw new NotImplementedException();

            _callback = callback;

            var factory = new ConnectionFactory()
            {
                HostName = _host, UserName = _username, Password = _password, DispatchConsumersAsync = true
            };

            _connection = factory.CreateConnection(_connName);
            _model      = _connection.CreateModel();
            _model.ExchangeDeclare(_exchange, "topic", durable: true, autoDelete: false);
            //_model.ExchangeDeclare(_exchange, "fanout", durable: true, autoDelete: false);
            _model.QueueDeclare(_queuename, durable: true, autoDelete: false, exclusive: false);
            _model.QueueBind(_queuename, _exchange, _routingKey);
            _consumer           = new AsyncEventingBasicConsumer(_model);
            _consumer.Received += Consumer_ReceivedAsync;
            _consumerTag        = _model.BasicConsume(_queuename, false, _consumer);
        }
Esempio n. 9
0
        public void Start(IMessageHandlerCallback callback)
        {
            _callback = callback;

            Policy
            .Handle <Exception>()
            .WaitAndRetry(9, r => TimeSpan.FromSeconds(5), (ex, ts) => { Log.Error("Error connecting to Queueing System. We Will Retry in 5 Seconds"); })
            .Execute(() =>
            {
                var factory = new ConnectionFactory()
                {
                    HostName = _host, UserName = _username, Password = _password, DispatchConsumersAsync = true
                };
                _connection = factory.CreateConnection();
                _model      = _connection.CreateModel();
                _model.ExchangeDeclare(_queuename, "fanout", durable: true, autoDelete: false);
                _model.QueueBind(_queuename, _exchange, _routingkey);
                _consumer           = new AsyncEventingBasicConsumer(_model);
                _consumer.Received += Consumer_Received;
                _consumerTag        = _model.BasicConsume(_queuename, false, _consumer);
            });
        }