private void RecoverQueues() { IDictionary <string, RecordedQueue> recordedQueuesCopy = null; lock (_recordedEntitiesLock) { recordedQueuesCopy = _recordedQueues.ToDictionary(entry => entry.Key, entry => entry.Value); } foreach (KeyValuePair <string, RecordedQueue> pair in recordedQueuesCopy) { string oldName = pair.Key; RecordedQueue rq = pair.Value; try { rq.Recover(); string newName = rq.Name; if (!oldName.Equals(newName)) { // Make sure server-named queues are re-added with // their new names. // We only remove old name after we've updated the bindings and consumers, // plus only for server-named queues, both to make sure we don't lose // anything to recover. MK. PropagateQueueNameChangeToBindings(oldName, newName); PropagateQueueNameChangeToConsumers(oldName, newName); // see rabbitmq/rabbitmq-dotnet-client#43 if (rq.IsServerNamed) { DeleteRecordedQueue(oldName); } RecordQueue(newName, rq); foreach (EventHandler <QueueNameChangedAfterRecoveryEventArgs> h in QueueNameChangeAfterRecovery?.GetInvocationList() ?? Array.Empty <Delegate>()) { try { var eventArgs = new QueueNameChangedAfterRecoveryEventArgs(oldName, newName); h(this, eventArgs); } catch (Exception e) { var args = new CallbackExceptionEventArgs(e); args.Detail["context"] = "OnQueueRecovery"; _delegate.OnCallbackException(args); } } } } catch (Exception cause) { string s = string.Format("Caught an exception while recovering queue {0}: {1}", oldName, cause.Message); HandleTopologyRecoveryException(new TopologyRecoveryException(s, cause)); } } }
protected void RecoverQueues() { lock (m_recordedQueues) { var rqs = new Dictionary <string, RecordedQueue>(m_recordedQueues); foreach (KeyValuePair <string, RecordedQueue> pair in rqs) { string oldName = pair.Key; RecordedQueue rq = pair.Value; try { rq.Recover(); string newName = rq.Name; // Make sure server-named queues are re-added with // their new names. // We only remove old name after we've updated the bindings and consumers, // plus only for server-named queues, both to make sure we don't lose // anything to recover. MK. PropagateQueueNameChangeToBindings(oldName, newName); PropagateQueueNameChangeToConsumers(oldName, newName); // see rabbitmq/rabbitmq-dotnet-client#43 if (rq.IsServerNamed) { DeleteRecordedQueue(oldName); } RecordQueue(newName, rq); if (m_queueNameChange != null) { foreach (EventHandler <QueueNameChangedAfterRecoveryEventArgs> h in m_queueNameChange.GetInvocationList()) { try { var eventArgs = new QueueNameChangedAfterRecoveryEventArgs(oldName, newName); h(this, eventArgs); } catch (Exception e) { var args = new CallbackExceptionEventArgs(e); args.Detail["context"] = "OnQueueRecovery"; m_delegate.OnCallbackException(args); } } } } catch (Exception cause) { string s = String.Format("Caught an exception while recovering queue {0}: {1}", oldName, cause.Message); HandleTopologyRecoveryException(new TopologyRecoveryException(s, cause)); } } } }
protected void RecoverQueues() { lock (m_recordedQueues) { var rqs = new Dictionary <string, RecordedQueue>(m_recordedQueues); foreach (KeyValuePair <string, RecordedQueue> pair in rqs) { string oldName = pair.Key; RecordedQueue rq = pair.Value; try { rq.Recover(); string newName = rq.Name; // make sure server-named queues are re-added with // their new names. MK. DeleteRecordedQueue(oldName); RecordQueue(newName, rq); PropagateQueueNameChangeToBindings(oldName, newName); PropagateQueueNameChangeToConsumers(oldName, newName); if (m_queueNameChange != null) { foreach (EventHandler <QueueNameChangedAfterRecoveryEventArgs> h in m_queueNameChange.GetInvocationList()) { try { var eventArgs = new QueueNameChangedAfterRecoveryEventArgs(oldName, newName); h(this, eventArgs); } catch (Exception e) { var args = new CallbackExceptionEventArgs(e); args.Detail["context"] = "OnQueueRecovery"; m_delegate.OnCallbackException(args); } } } } catch (Exception cause) { string s = String.Format("Caught an exception while recovering queue {0}: {1}", oldName, cause.Message); HandleTopologyRecoveryException(new TopologyRecoveryException(s, cause)); } } } }
protected void OnQueueNameChangeAfterRecovery(object sender, QueueNameChangedAfterRecoveryEventArgs e) { Info($"Queue Name Changed: Before: {e.NameBefore} After: {e.NameAfter}"); }