Пример #1
0
        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");
            });
        }