コード例 #1
0
        public string Consumer()
        {
            var message = string.Empty;
            var channel = _rabbitConnection.GetModel();

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

            policy.Execute(() =>
            {
                channel.QueueDeclare(queue: _rabbitConnection.GetQueueName(),
                                     durable: false,
                                     exclusive: false,
                                     autoDelete: false,
                                     arguments: null);
                var consumer       = new EventingBasicConsumer(channel);
                consumer.Received += (model, ea) =>
                {
                    var body = ea.Body.ToArray();
                    message  = Encoding.UTF8.GetString(body);
                    Console.WriteLine(" [x] Recebida [x] \n{0} ", message);
                };
                channel.BasicConsume(queue: _rabbitConnection.GetQueueName(),
                                     autoAck: true,
                                     consumer: consumer);
            });

            return(message);
        }
コード例 #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)
                );
        }
コード例 #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)
                );
        }
コード例 #4
0
        private void Consumer()
        {
            var channel = _rabbitConnection.GetModel();

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

            policy.Execute(() =>
            {
                channel.QueueDeclare(queue: _rabbitConnection.GetQueueName(),
                                     durable: false,
                                     exclusive: false,
                                     autoDelete: false,
                                     arguments: null);
                var consumer       = new EventingBasicConsumer(channel);
                consumer.Received += (model, ea) =>
                {
                    var body    = ea.Body.ToArray();
                    var message = Encoding.UTF8.GetString(body);
                    Console.WriteLine(" [x] Recebida [x] \n{0} ", message);

                    _repository.Add(JsonConvert.DeserializeObject <Message>(message));
                    //using (var scope = _scopeFactory.CreateScope())
                    //{
                    //    var dbContext = scope.ServiceProvider.GetRequiredService<BariContext>();
                    //    dbContext.Messages.Add(JsonConvert.DeserializeObject<Message>(message));

                    //}
                };
                channel.BasicConsume(queue: _rabbitConnection.GetQueueName(),
                                     autoAck: true,
                                     consumer: consumer);
            });
        }