Exemple #1
0
        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);
        }