Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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");
            }
        }
Пример #4
0
        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);
                }
            }
        }
Пример #5
0
        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);
            }
        }