private void OnMessage(IAsyncResult ar) { try { var receivedMessages = _subscriptionClient.EndReceiveBatch(ar); if (_cancelRequested) { return; } foreach (var receivedMessage in receivedMessages) { _tryProcessMessage(receivedMessage); } } catch (MessagingEntityDisabledException) { if (_cancelRequested) { return; } Thread.Sleep(TimeSpan.FromSeconds(BackoffTimeInSeconds)); } catch (ServerBusyException) { if (_cancelRequested) { return; } Thread.Sleep(TimeSpan.FromSeconds(BackoffTimeInSeconds)); } _subscriptionClient.BeginReceiveBatch(BatchSize, TimeSpan.FromSeconds(ServerWaitTime), OnMessage, null); }