Обработка сообщений очереди служебной шины по одному - PullRequest
0 голосов
/ 05 октября 2018

Я относительно новичок в Очереди служебной шины Azure и собираю проект, который должен обрабатывать сообщения в очереди в порядке их поступления (FIFO).

Используя документацию Microsoft, я смог понять эту часть.Из того, что я понимаю, мне нужно включить сеансы для очереди?

С чем я борюсь, так это с определением того, какой подход будет наилучшим подходом / стеком обслуживания для выполнения следующего набора упорядоченных задач в очереди.

Сначала давайте предположим, что у нас есть FIFO-на основе Service Bus Queue, в котором есть n количество сообщений.Как я могу:

  1. Забрать первое сообщение из очереди.
  2. Обработать сообщение, используя Функция Azure .
  3. Отправитьполезная нагрузка на IoT Hub, который будет доставлять на внешнее устройство (C2D).
  4. Это та часть, которую я не могу понять ... Подождите, пока Completed *Индикатор 1025 * для возврата из IoT Hub или дождитесь окончания срока действия TTL для исходящего сообщения IoT Hub.
  5. Теперь заполните элемент в очереди.
  6. Начните с1.

Я мог бы предположить, что, возможно, Приложение логики может помочь мне достичь того, что я пытаюсь сделать.Все кажется прямым до 4.Я не могу понять, как использовать приложение логики. 1. Дождитесь, пока IoT Hub подтвердит, что сообщение Cloud-to-Device было отправлено или истекло, и 2. Не обрабатывайте следующее сообщение в очереди.пока подтверждение IoT Hub не было получено и Я пометил текущее сообщение в очереди как завершенное.

Обратите внимание: причина, по которой я так конкретен в этом, заключается в том, что устройстваПолучение исходящих сообщений IoT Hub C2D заботится о заказе.Если они получают сообщения не по порядку, процесс прекращается.

Любые предложения приветствуются.

1 Ответ

0 голосов
/ 05 октября 2018

Очереди служебной шины Azure с сеансом можно использовать для выполнения упорядоченной обработки сообщения.

Из этого вопроса я могу понять, что сообщение из очереди служебной шины следует удалять только после получения подтвержденияиз IOT Hub.

Я могу почувствовать проблему, которая может возникнуть с этим потоком.

Прежде всего, вам необходимо понять свойство lock duration в очереди служебной шины.В зависимости от значения, установленного для этого свойства, сообщения будут заблокированы на x минут или секунд.Всякий раз, когда сообщение получено из очереди, к сообщению будет применена блокировка.Так что сообщение не будет доступно никаким другим получателям в течение х минут или секунд.Complete операция должна произойти до истечения срока блокировки.После истечения срока блокировки сообщение будет доступно для обработки другими получателями.В вашем случае у этой же функции Azure есть шанс получить сообщение еще раз (что приводит к дублированию)

Максимальное значение, которое можно установить для свойства длительности блокировки, составляет 5 минут.

Итак, если вы уверены, что IOT Hub отвечает через 5 минут, вы можете приступить к этой реализации.Тем не менее, не будет возможности сообщить функции, когда обрабатывать следующее сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...