public void Publish <T>(T entity)
        {
            var policy = RetryPolicy.Handle <BrokerUnreachableException>()
                         .Or <SocketException>()
                         .WaitAndRetry(_rabbitConnection.GetRetryCount(), retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), (ex, time) =>
            {
                Console.WriteLine(ex.ToString());
            });

            var json    = JsonConvert.SerializeObject(entity);
            var channel = _rabbitConnection.GetModel();

            channel.QueueDeclare(queue: _rabbitConnection.GetQueueName(),
                                 durable: false,
                                 exclusive: false,
                                 autoDelete: false,
                                 arguments: null);

            policy.Execute(() =>
            {
                var properties        = channel.CreateBasicProperties();
                properties.Persistent = true;

                channel.BasicPublish(
                    exchange: _rabbitConnection.GetExchange(),
                    routingKey: _rabbitConnection.GetRoutingKey(),
                    basicProperties: properties,
                    body: Encoding.UTF8.GetBytes(json)
                    );
            });
        }
Esempio n. 2
0
        public void AddEvent(IEvent @event)
        {
            var json    = Serialize(@event);
            var channel = rabbitConnection.GetModel();

            var properties = channel.CreateBasicProperties();

            properties.Persistent = true;

            channel.BasicPublish(
                exchange: rabbitConnection.GetExchange(),
                routingKey: rabbitConnection.GetRoutingKey(),
                basicProperties: properties,
                body: Encoding.UTF8.GetBytes(json)
                );
        }
Esempio n. 3
0
        public void AddEvent(IEvent @event)
        {
            var json    = Serialize(@event);
            var channel = _rabbitConnection.GetModel();

            channel.QueueDeclare(queue: _rabbitConnection.GetQueueName(),
                                 durable: false,
                                 exclusive: false,
                                 autoDelete: false,
                                 arguments: null);

            var properties = channel.CreateBasicProperties();

            properties.Persistent = true;

            channel.BasicPublish(
                exchange: _rabbitConnection.GetExchange(),
                routingKey: _rabbitConnection.GetRoutingKey(),
                basicProperties: properties,
                body: Encoding.UTF8.GetBytes(json)
                );
        }