Beispiel #1
0
 public QueueMessage ReadNextFrom(string queueName)
 {
     using (var connection = Connections.ConnectToInitializedQueue(queueName))
     {
         return(ReadMessage(connection, Locks.TakeQueueLock(queueName)));
     }
 }
        public void Create(CreateMessage request)
        {
            var queueLock = Locks.TakeQueueLock(request.QueueName);

            lock (queueLock)
            {
                if (Locks.QueuesRecoveryLocks.ContainsKey(request.QueueName))
                {
                    throw new Exception($"Queue {request.QueueName} is inconsistent");
                }

                using (var connection = Connections.ConnectToInitializedQueue(request.QueueName))
                {
                    Create(connection, request);
                    Monitor.PulseAll(queueLock);
                }
            }
        }
        public void Delete(DeleteMessage request)
        {
            var queueLock = Locks.TakeQueueLock(request.QueueName);

            lock (queueLock)
            {
                if (Locks.QueuesRecoveryLocks.ContainsKey(request.QueueName))
                {
                    throw new Exception($"Queue {request.QueueName} is inconsistent");
                }
                using (var connection = Connections.ConnectToInitializedQueue(request.QueueName))
                {
                    if (IsDeleteDecisionImposedByCooperator(request))
                    {
                        ForceDelete(connection, request);
                    }
                    else
                    {
                        TryDelete(connection, request);
                    }
                }
            }
        }