Отправка, получение и пакетная обработка сообщений в Azure Logic Apps

Область применения: Azure Logic Apps (потребление)

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

В этом практическом руководстве показано, как создать решение пакетной обработки, создав два приложения логики в одной подписке Azure, регионе Azure и в следующем порядке:

  1. Приложение логики для получения пакета ("получатель"), которое принимает и собирает сообщения в пакет до тех пор, пока не будут выполнены определенные условия для отправки и обработки этих сообщений. Сначала создайте получатель пакетов, чтобы потом, при создании отправителя пакетов, можно было выбрать место назначения для отправки пакетов.

  2. Одно или несколько приложений логики для отправки пакетов ("отправители"), которые отправляют сообщения ранее созданному получателю пакетов.

    Отправитель пакетов может указать уникальный ключ, чтобы секционировать (разделить) по этому ключу целевой пакет на подмножества. Например, номер клиента является уникальным ключом. Это позволит получающему приложению получать все элементы с одинаковыми значениями ключа и обрабатывать их одновременно.

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

Предварительные требования

Ограничения

  • Вы можете проверка содержимое в пакете после выпуска, сравнив выпущенное содержимое с источником.

  • Вы можете освободить пакет на раннем этапе, изменив условия выпуска в приемнике пакета, как описано в этом руководстве, пока триггер по-прежнему содержит пакет. Однако триггер использует обновленные критерии выпуска для любых неотправленных сообщений.

Создание получателя пакетов

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

  1. На портале Azure или в Visual Studio создайте приложение логики с именем: BatchReceiver.

  2. В конструкторе рабочих процессов добавьте триггер пакетной службы , который запускает рабочий процесс приложения логики. В поле поиска введите batch и выберите этот триггер: Пакетные сообщения.

    Добавление триггера

  3. Задайте эти свойства для получения пакетов:

    Свойство Описание
    Пакетный режим - Встроенный — позволяет определить условия отправки прямо в триггере пакета.
    - Учетная запись интеграции — позволяет определить несколько конфигураций для условий отправки с помощью учетной записи интеграции. Благодаря учетной записи интеграции эти конфигурации можно сохранять в одном расположении, а не в отдельных приложениях логики.
    Имя пакета В нашем примере пакет имеет имя TestBatch. Этот параметр применяется только к встроенному пакетному режиму.
    Условия отправки Применяется только ко встроенному пакетному режиму и определяет критерии, которые должны выполняться для обработки каждого пакета:

    - На основе количества сообщений: выпуск пакета зависит от числа сообщений, собранных этим пакетом.
    - На основе размера: выпуск пакета зависит от общего размера (в байтах) всех сообщений, собранных этим пакетом.
    - График: выпуск пакета на основе графика повторения, который определяет интервал и частоту. В дополнительных параметрах можно также выбрать часовой пояс и указать дату начала и время.
    - Выбрать все. Задает использование всех настроенных условий.

    Количество сообщений Определяет, сколько сообщений нужно собрать в одном пакете (например, 10). Ограничение пакета — 8000 сообщений.
    Размер пакета Общий размер в байтах для сбора в пакете (например, 10 МБ). Ограничение размера пакета — 80 МБ.
    Расписание Определяет интервал и частоту отправки пакетов (например, 10 минут). Минимальное значение повторов составляет 60 секунд (1 минута). Дробные значения минут округляются до 1 минуты. Чтобы указать часовой пояс или дату и время начала, откройте список Добавить новый параметр и выберите соответствующие свойства.

    Примечание

    Если вы изменяете условие выпуска, когда в триггере еще есть пакетные неотправленные сообщения, триггер использует обновленные критерии выпуска для обработки неотправленных сообщений.

    В этом примере показаны все условия, но в своих тестах попробуйте выполнить только один критерий:

    Ввод сведений для триггера

  4. Теперь добавьте одно или несколько действий для обработки каждого пакета.

    В нашем примере добавляется действие, которое отправляет сообщение электронной почты, когда срабатывает триггер "Пакет". Этот триггер запускается и отправляет сообщение электронной почты, когда в пакете собирается 10 сообщений, их общий размер достигает 10 МБ или проходит 10 минут.

    1. В разделе триггера "Пакет" щелкните Новый шаг.

    2. В поле поиска введите send email в качестве фильтра. Выберите соединитель электронной почты в зависимости от своего поставщика электронной почты.

      Например, если у вас рабочая или учебная учетная запись, такая как @fabrikam.com или @fabrikam.onmicrosoft.com, выберите соединитель Microsoft 365 Outlook. Если у вас есть личная учетная запись, такая как @outlook.com или @hotmail.com, выберите соединитель Outlook.com. В этом примере используется соединитель Microsoft 365 Outlook.

    3. Выберите действие "Отправить электронное письмо" для поставщика, например:

      Выбор действия

  5. Если отобразится запрос на вход в учетную запись электронной почты, выполните его.

  6. Задайте свойства для добавленного действия.

    • В поле Кому введите адрес электронной почты получателя. Для тестировании можете использовать свой собственный адрес.

    • В поле Тема, когда отобразится список динамического содержимого, выберите поле Имя секции.

      Выбор значения

      В следующем отправителе пакетов можно указать уникальный ключ секции, который разделит целевой пакет на логические наборы, в которые затем можно отправлять сообщения. Каждый набор имеет уникальный номер, который создается приложением логики, отправляющим пакеты. Эта функция позволяет использовать один пакет с несколькими подмножествами и определить каждое подмножество с помощью задаваемого имени.

      Важно!

      Раздел имеет ограничение в 5000 сообщений или 80 МБ. Если выполняется любое из этих условий, Logic Apps отправит очередной пакет даже без соблюдения условия отправки.

    • В поле Текст, когда отобразится список динамического содержимого, выберите поле Идентификатор сообщения.

      Конструктор рабочих процессов автоматически добавляет цикл For each вокруг действия отправить сообщение электронной почты, так как это действие обрабатывает выходные данные предыдущего действия как коллекцию, а не пакет.

      Выбор значения

  7. Сохраните приложение логики Итак, вы создали получатель пакетов.

    Сохранение приложения логики

    Важно!

    Если вы используете Visual Studio, перед тем как перейти к следующему разделу, убедитесь, что вы сначала развернули приложение логики получателя пакета в Azure. В противном случае вы не сможете выбрать этот получатель пакетов при создании отправителя пакетов.

Создание отправителя пакетов

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

  • Убедитесь, что вы уже создали и развернули получатель пакетов, так чтобы при создании отправителя пакетов можно было выбрать имеющийся получатель пакетов в качестве места назначения. Получателям пакетов не требуются сведения об отправителях пакетов, но отправители должны знать параметры назначения для отправки сообщений.

  • Убедитесь, что для получателя и отправителя пакетов используется одна и та же подписка Azure и один регион Azure. В противном случае при создании отправителя пакетов вы не сможете выбрать получателя пакетов, так как они не видны друг другу.

  1. Создайте другое приложение логики с именем: BatchSender.

    1. В поле поиска введите recurrence в качестве фильтра. В списке триггеров выберите триггер: Периодичность

      Добавление триггера повторения

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

      Настройка частоты и интервала триггера

  2. Добавьте новое действие для отправки сообщений в пакет.

    1. В разделе триггера Периодичность выберите Новый шаг.

    2. В поле поиска введите batch в качестве фильтра и выберите это действие: Выбор рабочего процесса приложений логики с помощью пакетного триггера.

      Выбор действия

      Появится список, в котором отображаются только те приложения логики, которые имеют триггеры пакетной службы и существуют в том же регионе Azure и в той же подписке Azure, что и приложение логики отправителя пакета.

    3. Из списка приложений логики выберите созданное ранее приложение логики получателя пакетов.

      Выбор приложения логики получателя пакета

      Важно!

      Если вы используете Visual Studio и не видите доступных для выбора получателей пакетов, убедитесь, что вы развернули получатель пакетов в Azure. В противном случае изучите инструкции по Развертыванию приложения логики получателя пакетов в Azure.

    4. В списке действий выберите это действие: Batch_messages - <your-logic-app-name>

      Выберите следующее действие:

  3. Задайте свойства для отправителя пакетов.

    Свойство Описание
    Имя пакета Имя пакета, определяемое приложением логики получателя. В данном примере это TestBatch.

    Важно! Имя пакета проверяется во время выполнения. Оно должно совпадать с именем, указанным в принимающем приложении логики. Изменение имени пакета приводит к сбою в работе приложения логики для отправки пакета.

    Содержимое сообщения Содержимое сообщения, которое вы хотите отправить

    Примечание

    Значения свойств Имя триггера и Рабочий процесс автоматически заполняются выбранным приложением логики.

    В нашем примере добавляется следующее выражение, которое вставляет текущую дату и время в сообщение, отправляемое в пакет:

    1. Щелкните в любом месте поля Содержимое сообщения.

    2. Когда появится список динамического содержимого, выберите Выражение.

    3. Введите выражение utcnow() и нажмите ОК.

      В окне

  4. Теперь настройте для пакета секцию. В действии BatchReceiver откройте список Добавить новый параметр и выберите эти свойства:

    Свойство Описание
    Имя секции Необязательный уникальный ключ раздела для разбивки отправляемых пакетов на логические подмножества и сбора сообщений с учетом этого ключа.
    Идентификатор сообщения Необязательный идентификатор сообщения. Если значение не указано, автоматически генерируется глобально уникальный идентификатор (GUID).

    В нашем примере добавьте в поле Имя раздела выражение, которое генерирует случайное число от 1 до 5. Оставьте пустым поле Идентификатор сообщения.

    1. Щелкните внутри поля Имя раздела, чтобы отобразить динамический список содержимого.

    2. В списке динамического содержимого выберите Выражение.

    3. Введите выражение rand(1,6) и нажмите ОК.

      Настройка секции для целевого пакета

      Эта функция rand генерирует число от 1 до 5. То есть пакет разделяется на пять нумерованных секций, которые динамически задаются этим выражением.

  5. Сохраните приложение логики Теперь ваше отправляющее приложение логики выглядит примерно так:

    Сохранение отправляющего приложения логики

Тестирование приложений логики

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

Приложение логики отправителя пакета запускается каждую минуту и создает случайное число от единицы до пяти. Отправитель пакета использует это случайное число в качестве ключа секции для целевого пакета, в котором отправляются сообщения. Когда в пакете собирается пять элементов с одинаковым ключом секции, приложение логики для получения пакетов активируется и отправляет сообщения электронной почты для каждого элемента.

Важно!

После проведения тестирования убедитесь, что приложение логики BatchSender отключено, чтобы оно прекратило отправлять сообщения и не перегружало папку "Входящие".

Дальнейшие действия