private async Task TryPublishQueuedMessageAsync(MqttApplicationMessage message) { Exception transmitException = null; try { await _mqttClient.PublishAsync(message).ConfigureAwait(false); if (_storageManager != null) { await _storageManager.RemoveAsync(message).ConfigureAwait(false); } } catch (MqttCommunicationException exception) { transmitException = exception; _logger.Warning <ManagedMqttClient>(exception, "Publishing application message failed."); if (message.QualityOfServiceLevel > MqttQualityOfServiceLevel.AtMostOnce) { _messageQueue.Add(message); } } catch (Exception exception) { transmitException = exception; _logger.Error <ManagedMqttClient>(exception, "Unhandled exception while publishing queued application message."); } finally { ApplicationMessageProcessed?.Invoke(this, new ApplicationMessageProcessedEventArgs(message, transmitException)); } }
private async Task TryPublishQueuedMessageAsync(MqttApplicationMessage message) { try { await _mqttClient.PublishAsync(message).ConfigureAwait(false); if (_storageManager != null) { await _storageManager.RemoveAsync(message).ConfigureAwait(false); } } catch (MqttCommunicationException exception) { _logger.Warning <ManagedMqttClient>(exception, "Publishing application message failed."); if (message.QualityOfServiceLevel > MqttQualityOfServiceLevel.AtMostOnce) { _messageQueue.Add(message); } } catch (Exception exception) { _logger.Error <ManagedMqttClient>(exception, "Unhandled exception while publishing queued application message."); } }