private async static void ReceiveFeedbackAsync() { var db = new IsmIoTPortalContext(); while (true) { var feedbackBatch = await feedbackReceiver.ReceiveAsync(); if (feedbackBatch == null) { continue; } // foreach (FeedbackRecord record in feedbackBatch.Records) { // https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages // Message is always success, because MQTT clients can't reject C2D Messages switch (record.OriginalMessageId.Substring(0, 3)) // Substring(0, 3) is the MessageIdPrefix { // CMD case MessageIdPrefix.CMD: await Task.Factory.StartNew(() => ProcessCmdMessage(record)); break; default: break; } } await feedbackReceiver.CompleteAsync(feedbackBatch); } }
public async Task ListenForCloud2DeviceCommandFeedback() { FeedbackReceiver <FeedbackBatch> feedbackReceiver = _serviceClient.GetFeedbackReceiver(); FeedbackBatch feedbackBatch = await feedbackReceiver.ReceiveAsync(TimeSpan.FromSeconds(5)); if (feedbackBatch == null) { return; } OnCloud2DeviceCommandFeedback?.Invoke(this, new Cloud2DeviceCommandFeedbackEventArgs($"{String.Join("\n", feedbackBatch.Records.Select(item => item.StatusCode).ToArray())}")); await feedbackReceiver.CompleteAsync(feedbackBatch); }
public static async Task receiveMessageFeedback(int listenFor = 100) { FeedbackReceiver <FeedbackBatch> feedbackReceiver = serviceClient.GetFeedbackReceiver(); FeedbackBatch feedback = await feedbackReceiver.ReceiveAsync(TimeSpan.FromSeconds(listenFor)).ConfigureAwait(false); if (feedback != null) { Console.WriteLine( "IotHub has received a message {0}", string.Join(", ", feedback.Records) ); } else { Console.WriteLine("IotHub has not received any messages"); } }
public async Task ReceiveFeedback(CancellationToken cancellationToken) { feedbackReceiver = this.client.GetFeedbackReceiver(); while (!cancellationToken.IsCancellationRequested) { var feedbackBatch = await feedbackReceiver.ReceiveAsync(); if (feedbackBatch != null) { foreach (var record in feedbackBatch.Records) { Feedback.Enqueue(record); } await feedbackReceiver.CompleteAsync(feedbackBatch); } } }
private static async Task ReceiveFeedback(ServiceClient serviceClient) { FeedbackReceiver <FeedbackBatch> feedbackReceiver = serviceClient.GetFeedbackReceiver(); while (true) { FeedbackBatch feedbackBatch = await feedbackReceiver.ReceiveAsync(); if (feedbackBatch == null) { continue; } foreach (FeedbackRecord record in feedbackBatch.Records) { string messageId = record.OriginalMessageId; FeedbackStatusCode statusCode = record.StatusCode; Console.WriteLine($"Feedback for message '{messageId}', status code: {statusCode}"); } await feedbackReceiver.CompleteAsync(feedbackBatch); } }