static void Main(string[] args) { CompositeResolver.RegisterAndSetAsDefault(new[] { EnumResolver.UnderlyingValue, StandardResolver.ExcludeNullCamelCase }); //bind eventhandlers IEventHandler eventHandler = ServiceProvider.GetService <IEventHandler>(); IEventHandlerCallback eventHandlerCallback = ServiceProvider.GetService <IEventHandlerCallback>(); try { eventHandler.Start(eventHandlerCallback); } catch (Exception ex) { Console.WriteLine("Error occured during eventhandler startup check logs for info" + ex.Message); Environment.Exit(1); } Console.WriteLine("Up and running and ready to rumble!"); while (true) { Thread.Sleep(10000); } }
public void Start(IEventHandlerCallback 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"); }); }