public void Publish(IntegrationEvent @event) { if (!_persistentConnection.IsConnected) { _policy.Execute((context) => _persistentConnection.TryConnect(), new Dictionary <string, object>() { { "logmessage", "RabbitMQ Client could not connect " } }); } _persistentConnection.CreateChannel(); var eventName = @event.GetType().Name; string message; if (@event.LegacyOut) { message = JsonConvert.SerializeObject(new LegacyOut(@event, eventName)); eventName = "LegacyOutIntegrationEvent"; } else { message = JsonConvert.SerializeObject(@event); } var body = Encoding.UTF8.GetBytes(message); _policy.Execute((context) => _persistentConnection.Publish(eventName, body), new Dictionary <string, object>() { { "logmessage", $"Could not publish event: {@event.Id} " } }); }