static void RetryMessage(string connectionString, string queueName, MessageToRetry messageToRetry) { string sql = string.Format( @"INSERT INTO [{0}] ( [Id], [Recoverable], [Headers], [Body]) VALUES ( @Id, @Recoverable, @Headers, @Body)", queueName); using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlCommand command = new SqlCommand(sql, connection)) { SqlParameterCollection parameters = command.Parameters; command.CommandType = CommandType.Text; parameters.Add("Id", SqlDbType.UniqueIdentifier).Value = messageToRetry.Id; parameters.Add("Headers", SqlDbType.VarChar).Value = messageToRetry.Headers; parameters.Add("Body", SqlDbType.VarBinary).Value = messageToRetry.Body; parameters.Add("Recoverable", SqlDbType.Bit).Value = true; command.ExecuteNonQuery(); } } }
static async Task RetryMessage(string connectionString, string queueName, MessageToRetry messageToRetry) { var sql = $@"INSERT INTO [{queueName}] ( [Id], [Recoverable], [Headers], [Body]) VALUES ( @Id, @Recoverable, @Headers, @Body)"; using (var connection = new SqlConnection(connectionString)) { await connection.OpenAsync() .ConfigureAwait(false); using (var command = new SqlCommand(sql, connection)) { var parameters = command.Parameters; command.CommandType = CommandType.Text; parameters.Add("Id", SqlDbType.UniqueIdentifier).Value = messageToRetry.Id; parameters.Add("Headers", SqlDbType.VarChar).Value = messageToRetry.Headers; parameters.Add("Body", SqlDbType.VarBinary).Value = messageToRetry.Body; parameters.Add("Recoverable", SqlDbType.Bit).Value = true; await command.ExecuteNonQueryAsync() .ConfigureAwait(false); } } }
static void RetryMessage(string connectionString, string queueName, MessageToRetry messageToRetry) { var sql = $@" insert into [{queueName}] ( Id, Recoverable, Headers, Body) values ( @Id, @Recoverable, @Headers, @Body)"; using (var connection = new SqlConnection(connectionString)) { connection.Open(); using (var command = new SqlCommand(sql, connection)) { var parameters = command.Parameters; parameters.Add("Id", SqlDbType.UniqueIdentifier).Value = messageToRetry.Id; parameters.Add("Headers", SqlDbType.NVarChar).Value = messageToRetry.Headers; parameters.Add("Body", SqlDbType.VarBinary).Value = messageToRetry.Body; parameters.Add("Recoverable", SqlDbType.Bit).Value = true; command.ExecuteNonQuery(); } } }
public static void ReturnMessageToSourceQueue( string errorQueueConnectionString, string errorQueueName, string retryConnectionString, string retryQueueName, Guid messageId) { using (var scope = new TransactionScope()) { MessageToRetry messageToRetry = ReadAndDelete(errorQueueConnectionString, errorQueueName, messageId); RetryMessage(retryConnectionString, retryQueueName, messageToRetry); scope.Complete(); } }