public void Rekeep <T>(string keepName, IStoredMessage <T> message) { message.StoreCount++; message.LastStoreTime = DateTimeOffset.Now; var payload = JsonConvert.SerializeObject(message.Payload); Insert(keepName, message.OriginalStoreTime, message.LastStoreTime, message.StoreCount, payload); }
private async Task KeepRetrieveRekeepLoopAsync(int iterations, ConcurrentDictionary <string, int> items) { var messageKeeper = MessageKeeperFactory.GetMessageKeeper(ConnectionString); // create a number of different orders concurrently (with other running tasks) for (int i = 0; i < iterations; i++) { var order = CreateOrder(); await messageKeeper.KeepAsync("Orders", order); } // then retrieve and rekeep from all running tasks concurrently for (int i = 0; i < iterations; i++) { var storedOrder = await messageKeeper.RetrieveMessageAsync <Order>("Orders"); if (storedOrder != null) { var key = storedOrder.Payload.OrderId + ":" + storedOrder.StoreCount; if (items.ContainsKey(key)) { items[key]++; } else { items.TryAdd(key, 1); } await messageKeeper.RekeepAsync("Orders", storedOrder); } } // finally Retrieve all the orders to empty the keep IStoredMessage <Order> storedMessage = await messageKeeper.RetrieveMessageAsync <Order>("Orders"); while (storedMessage != null) { var key = storedMessage.Payload.OrderId + ":" + storedMessage.StoreCount; if (items.ContainsKey(key)) { items[key]++; } else { items.TryAdd(key, 1); } storedMessage = await messageKeeper.RetrieveMessageAsync <Order>("Orders"); } }
public async Task RekeepAsync <T>(string keepName, IStoredMessage <T> message) { await Task.Run(() => Rekeep(keepName, message)); }