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); } } } }