ConnectionFactory _ConnectionFactory = new ConnectionFactory { Uri = ConnectionInstanceManager.InitializeRabbitMqConnectionUri(connectionStringName, true) }; using (Channel = _ConnectionFactory.CreateModel()) { byte[] message = this._MessageSerializer.MessageToByteArray(MessageItem, IgnorableSerializerContractResolver); //Declare topic exchange which is durable Channel.ExchangeDeclare("Super-Exchange", ExchangeType.Topic, true); //Message property IBasicProperties _BasicProperties = new BasicProperties { ContentEncoding = "utf8", ContentType = "application/json", Timestamp = new AmqpTimestamp(GetEpochTimeStamp()), }; _BasicProperties.SetPersistent(true); //Publisher confirm Channel.ConfirmSelect(); Channel.BasicPublish(_MessageExchangeProperties.Name, MessageItem.RouteKey, basicProperties, message); //Wait for confirmation from RabbitMQ Channel.WaitForConfirmsOrDie(TimeSpan.FromMilliseconds(_MessageExchangeProperties.WaitForConfirmsTimeOut)); }