public void PersistRestore() { const string storeName = "TestStore"; var message = new MyMessage(); // clean up QueueStorage.DeleteQueue(QueueName); foreach (var skey in QueueStorage.ListPersisted(storeName)) { QueueStorage.DeletePersisted(storeName, skey); } // put QueueStorage.Put(QueueName, message); // get var retrieved = QueueStorage.Get <MyMessage>(QueueName, 1).First(); Assert.AreEqual(message.MyGuid, retrieved.MyGuid, "#A01"); // persist QueueStorage.Persist(retrieved, storeName, "manual test"); // abandon should fail (since not invisible anymore) Assert.IsFalse(QueueStorage.Abandon(retrieved), "#A02"); // list persisted message var key = QueueStorage.ListPersisted(storeName).Single(); // get persisted message var persisted = QueueStorage.GetPersisted(storeName, key); Assert.IsTrue(persisted.HasValue, "#A03"); Assert.IsTrue(persisted.Value.DataXml.HasValue, "#A04"); var xml = persisted.Value.DataXml.Value; var property = xml.Elements().Single(x => x.Name.LocalName == "MyGuid"); Assert.AreEqual(message.MyGuid, new Guid(property.Value), "#A05"); // restore persisted message QueueStorage.RestorePersisted(storeName, key); // list no longer contains key Assert.IsFalse(QueueStorage.ListPersisted(storeName).Any(), "#A06"); // get var retrieved2 = QueueStorage.Get <MyMessage>(QueueName, 1).First(); Assert.AreEqual(message.MyGuid, retrieved2.MyGuid, "#A07"); // delete Assert.IsTrue(QueueStorage.Delete(retrieved2), "#A08"); }