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");
        }
Exemple #2
0
 public void Abandon()
 {
     _storage.Abandon(Message);
 }