public string Enqueue(T data) { string id = Guid.NewGuid().ToString("N"); Log.Trace().Message("Queue {0} enqueue item: {1}", _queueName, id).Write(); bool success = _cache.Add(GetPayloadKey(id), data, _payloadTtl); if (!success) { throw new InvalidOperationException("Attempt to set payload failed."); } _db.ListLeftPush(QueueListName, id); _subscriber.Publish(GetTopicName(), id); Interlocked.Increment(ref _enqueuedCount); Log.Trace().Message("Enqueue done").Write(); return(id); }