public void Register(Message message) { timeoutMessageIds.Write(writer => { var timeToSend = XmlConvert.ToDateTime(message.Headers["time-to-send"], XmlDateTimeSerializationMode.Unspecified); logger.DebugFormat("Registering message {0} to be sent at {1} on {2}", message.Id, timeToSend, queue.QueueName); writer.Add(timeToSend, message.Id); }); }
public Message ToMessage() { var message = new Message { Data = Payload, Id = MessageId, SentAt = CreatedAt, SubQueue = SubQueueName, ProcessedCount = ProcessedCount }; message.Headers = extractHeaders(Headers); return message; }
public void MoveTo(string subQueue, Message message) { using (var command = SqlTransactionContext.Current.Connection.CreateCommand()) { command.Transaction = SqlTransactionContext.Current.Transaction; command.CommandText = "Queue.MoveMessage"; command.CommandType = CommandType.StoredProcedure; command.Parameters.AddWithValue("@Endpoint", _endpoint.ToString()); command.Parameters.AddWithValue("@Queue", _queueName); command.Parameters.AddWithValue("@Subqueue", (object)subQueue ?? DBNull.Value); command.Parameters.AddWithValue("@MessageId", message.Id); command.ExecuteNonQuery(); } }
public static void WriteMessageId(this OrderedList<DateTime, IList<long>>.Writer writer, DateTime timeToSend, Message message) { List<IList<long>> list; if (writer.TryGetValue(timeToSend, out list) && list.Count > 0) { list[0].Add(message.Id); } else { writer.Add(timeToSend, new List<long> { message.Id }); } }
public void MarkMessageAsReady(Message message) { using (var command = SqlTransactionContext.Current.Connection.CreateCommand()) { command.CommandText = "Queue.MarkMessageAsReady"; command.CommandType = CommandType.StoredProcedure; command.Transaction = SqlTransactionContext.Current.Transaction; command.Parameters.AddWithValue("@MessageId", message.Id); command.ExecuteNonQuery(); } }