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