public BuildCommand ( |
||
selectCommand | ||
query | ReceiveMessageQuery | |
return | void |
public void BuildCommand(SqlCommand selectCommand, ReceiveMessageQuery query)
{
selectCommand.Transaction = query.Transaction;
if (query.MessageId != null && query.MessageId.HasValue)
{
selectCommand.CommandText =
_createDequeueStatement.GetDeQueueCommand(true, query.Routes);
selectCommand.Parameters.Add("@QueueID", SqlDbType.BigInt);
selectCommand.Parameters["@QueueID"].Value = query.MessageId.Id.Value;
}
else
{
selectCommand.CommandText =
_createDequeueStatement.GetDeQueueCommand(false, query.Routes);
}
if (_options.Value.EnableRoute && query.Routes != null && query.Routes.Count > 0)
{
var routeCounter = 1;
foreach (var route in query.Routes)
{
selectCommand.Parameters.Add("@Route" + routeCounter.ToString(), SqlDbType.VarChar);
selectCommand.Parameters["@Route" + routeCounter.ToString()].Value = route;
routeCounter++;
}
}
}
}
/// <summary> /// Handles the specified query. /// </summary> /// <param name="query">The query.</param> /// <returns></returns> public async Task <IReceivedMessageInternal> Handle(ReceiveMessageQueryAsync <SqlConnection, SqlTransaction> query) { using (var selectCommand = query.Connection.CreateCommand()) { _buildDequeueCommand.BuildCommand(selectCommand, query); using (var reader = await selectCommand.ExecuteReaderAsync().ConfigureAwait(false)) { return(_readMessage.Read(reader)); } } }