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"); }); }
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); }); }
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); } }
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); }
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."); }
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); }
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); }); }