public List<QueueMessage> ListTop10Messages(string queueUrl)
{
var req = new ReceiveMessageRequest() {
MaxNumberOfMessages = 10,
QueueUrl = queueUrl
};
req.AttributeNames.Add("SentTimestamp");
req.AttributeNames.Add("ApproximateReceiveCount");
req.AttributeNames.Add("ApproximateFirstReceiveTimestamp");
var result = new List<QueueMessage>(10);
var response = client.ReceiveMessage(req);
if (response.Messages != null && response.Messages.Any()) {
DateTime epochDate = new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc);
foreach (Message msg in response.Messages) {
var qm = new QueueMessage {
Body = msg.Body,
ReceiptHandle = msg.ReceiptHandle
};
if (msg.Attributes != null && msg.Attributes.Any()) {
foreach (KeyValuePair<string, string> att in msg.Attributes) {
switch (att.Key) {
case "SentTimestamp":
qm.Sent = epochDate.AddMilliseconds(double.Parse(att.Value));
break;
case "ApproximateReceiveCount":
qm.ApproximateReceiveCount = Int32.Parse(att.Value);
break;
case "ApproximateFirstReceiveTimestamp":
qm.FirstReceived = epochDate.AddMilliseconds(double.Parse(att.Value));
break;
}
}
}
result.Add(qm);
}
}
return result;
}