public void PutGetAbandonDelete() { var message = new MyMessage(); QueueStorage.DeleteQueue(QueueName); // deleting queue on purpose // (it's slow but necessary to really validate the retry policy) // put QueueStorage.Put(QueueName, message); // get var retrieved = QueueStorage.Get <MyMessage>(QueueName, 1).First(); Assert.AreEqual(message.MyGuid, retrieved.MyGuid, "#A01"); // abandon var abandoned = QueueStorage.Abandon(retrieved); Assert.IsTrue(abandoned, "#A02"); // abandon II should fail (since not invisible) var abandoned2 = QueueStorage.Abandon(retrieved); Assert.IsFalse(abandoned2, "#A03"); // get again var retrieved2 = QueueStorage.Get <MyMessage>(QueueName, 1).First(); Assert.AreEqual(message.MyGuid, retrieved2.MyGuid, "#A04"); // delete var deleted = QueueStorage.Delete(retrieved2); Assert.IsTrue(deleted, "#A05"); // get now should fail var retrieved3 = QueueStorage.Get <MyMessage>(QueueName, 1).FirstOrDefault(); Assert.IsNull(retrieved3, "#A06"); // abandon does not put it to the queue again var abandoned3 = QueueStorage.Abandon(retrieved2); Assert.IsFalse(abandoned3, "#A07"); // get now should still fail var retrieved4 = QueueStorage.Get <MyMessage>(QueueName, 1).FirstOrDefault(); Assert.IsNull(retrieved4, "#A07"); }
public void Abandon() { _storage.Abandon(Message); }