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