Отправка, получение и пакетная обработка сообщений в Azure Logic Apps
Область применения: Azure Logic Apps (Потребление + Стандартный)
Для совместной отправки и обработки сообщений одной группой вы можете воспользоваться решением для пакетной обработки сообщений. Данное решение собирает сообщения в пакет и ожидает, пока определенные заданные условия не будут выполнены, после этого освобождает и отправляет пакетные сообщения. Пакетная обработка помогает снизить частоту обработки сообщений в приложении логики.
В этом руководстве показано, как создать пакетное решение путем создания двух приложений логики в одной подписке Azure, регионе Azure и в этом порядке:
Приложение логики для получения пакета ("получатель"), которое принимает и собирает сообщения в пакет до тех пор, пока не будут выполнены определенные условия для отправки и обработки этих сообщений. Сначала создайте получатель пакетов, чтобы потом, при создании отправителя пакетов, можно было выбрать место назначения для отправки пакетов.
Одно или несколько приложений логики для отправки пакетов ("отправители"), которые отправляют сообщения ранее созданному получателю пакетов.
Отправитель пакетов может указать уникальный ключ, чтобы секционировать (разделить) по этому ключу целевой пакет на подмножества. Например, номер клиента является уникальным ключом. Это позволит получающему приложению получать все элементы с одинаковыми значениями ключа и обрабатывать их одновременно.
Ваш получатель и отправитель пакетов должны использовать одну и ту же подписку Azure и регион Azure. В противном случае при создании отправителя пакетов вы не сможете выбрать получателя пакетов, так как они не видны друг другу.
Необходимые компоненты
Учетная запись и подписка Azure. Если у вас нет ее, вы можете зарегистрироваться для получения бесплатной учетной записи Azure.
Учетная запись электронной почты любого поставщика электронной почты, поддерживаемого Azure Logic Apps.
Внимание
Только учетные записи для бизнеса G-Suite могут использовать соединитель Gmail без ограничений в приложениях логики. Если у вас есть учетная запись потребителя Gmail, вы можете использовать этот соединитель только с определенными утвержденными Google службами. Кроме того, вы можете создать клиентское приложение Google, которое будет использоваться для проверки подлинности в соединителе Gmail. Дополнительные сведения см. в статье Политики безопасности и конфиденциальности данных для соединителей Google в Azure Logic Apps.
Основные знания о рабочих процессах приложения логики
Чтобы использовать Visual Studio Code, а не портал Azure, убедитесь, что вы настроили Visual Studio Code для работы с Azure Logic Apps.
Ограничения
Содержимое можно проверить только в пакете после выпуска, сравнивая выпущенное содержимое с источником.
Пакет можно освободить только раньше, изменив условия выпуска в приемнике пакетной службы, который описан в этом руководстве, в то время как триггер по-прежнему имеет пакет. Однако триггер использует обновленные условия выпуска для любых неотступных сообщений.
Создание получателя пакетов
Прежде чем вы сможете отправлять сообщения в пакет, такой пакет должен существовать как назначение для отправки. Сначала необходимо создать рабочий процесс приложения логики "пакетного приемника", который начинается с триггера пакетной службы. Таким образом, при создании рабочего процесса приложения логики "пакетный отправитель" можно выбрать рабочий процесс приложения логики получателя пакетной службы. Получатель пакетов продолжает собирать сообщения до тех пор, пока не будут выполнены определенные условия для отправки и обработки этих сообщений. Получателям пакетов не требуются сведения об отправителях пакетов, но отправители должны знать параметры назначения для отправки сообщений.
В портал Azure создайте ресурс приложения логики с пустым рабочим процессом.
В этом примере создается приложение логики пакетного приемника и рабочий процесс с именем BatchReceiver.
В конструкторе рабочих процессов выберите "Добавить триггер" и выполните следующие общие действия, чтобы добавить триггер пакетной службы с именем Batch Trigger.
Задайте следующие свойства триггера:
Свойство Description Режим
(только рабочие процессы потребления)- Встроенное: определение условий выпуска внутри триггера пакетной службы
- Учетная запись интеграции. Определение нескольких конфигураций условий выпуска с помощью учетной записи интеграции. С помощью учетной записи интеграции эти конфигурации можно поддерживать в одном месте, а не в отдельных ресурсах приложения логики.Имя пакета Имя пакета. В рабочих процессах потребления это свойство отображается только в том случае, если для режима задано значение Inline. В этом примере используется TestBatch. Условия отправки Критерии, которые необходимо выполнить перед обработкой каждого пакета. По умолчанию триггер пакетной службы работает с помощью встроенного режима, в котором определяются критерии выпуска пакетной службы внутри триггера пакетной службы.
- На основе количества сообщений: выпуск пакета зависит от числа сообщений, собранных этим пакетом.
- На основе размера: выпуск пакета зависит от общего размера (в байтах) всех сообщений, собранных этим пакетом.
- На основе расписания: выпуск пакета на основе расписания повторения, указывающего интервал и частоту. При необходимости можно выбрать часовой пояс и указать дату начала и время.
Чтобы использовать все указанные критерии, выберите все параметры.Количество сообщений Определяет, сколько сообщений нужно собрать в одном пакете (например, 10). Ограничение пакетного сообщения составляет 8 000 сообщений. Размер пакета Общий размер байтов для сообщений, собираемых в пакете, например 10 МБ. Ограничение размера пакета составляет 80 МБ. Повторение Определяет интервал и частоту отправки пакетов (например, 10 минут). Минимальное значение повторов составляет 60 секунд (1 минута). Дробные значения минут округляются до 1 минуты. При необходимости можно выбрать часовой пояс и указать дату и время начала. Примечание.
Если вы изменяете условие выпуска, когда в триггере еще есть пакетные неотправленные сообщения, триггер использует обновленные критерии выпуска для обработки неотправленных сообщений.
В этом примере показаны все условия, но в своих тестах попробуйте выполнить только один критерий:
Теперь добавьте одно или несколько действий для обработки каждого пакета.
В нашем примере добавляется действие, которое отправляет сообщение электронной почты, когда срабатывает триггер "Пакет". Этот триггер запускается и отправляет сообщение электронной почты, когда в пакете собирается 10 сообщений, их общий размер достигает 10 МБ или проходит 10 минут.
В разделе триггера пакетной службы выберите знак> "плюс" (+) "Добавить действие".
Выполните следующие общие действия, чтобы добавить действие, которое отправляет сообщение электронной почты на основе поставщика электронной почты.
Например, если у вас рабочая или учебная учетная запись, такая как @fabrikam.com или @fabrikam.onmicrosoft.com, выберите соединитель Microsoft 365 Outlook. Если у вас есть личная учетная запись, такая как @outlook.com или @hotmail.com, выберите соединитель Outlook.com. В этом примере используется соединитель Microsoft 365 Outlook.
Если отобразится запрос на вход в учетную запись электронной почты, выполните его.
Задайте следующие свойства действия:
В поле Кому введите адрес электронной почты получателя. Для тестировании можете использовать свой собственный адрес.
Выберите внутри поля "Тема ", чтобы просмотреть параметры списка динамического содержимого (значок молнии) и редактора выражений (значок функции). Щелкните значок молнии, чтобы открыть список динамического содержимого, и выберите поле с именем раздела.
В следующем отправителе пакетов можно указать уникальный ключ секции, который разделит целевой пакет на логические наборы, в которые затем можно отправлять сообщения. Каждый набор имеет уникальное число, созданное рабочим процессом приложения логики пакетного отправителя. Эта функция позволяет использовать один пакет с несколькими подмножествами и определить каждое подмножество с помощью задаваемого имени.
Внимание
Раздел имеет ограничение в 5000 сообщений или 80 МБ. Если любое условие выполнено, Azure Logic Apps может освободить пакет, даже если определенное условие выпуска не выполнено.
Выберите внутри поля "Текст" , щелкните значок молнии, чтобы открыть список динамического содержимого, и выберите поле "Идентификатор сообщения".
Конструктор рабочих процессов автоматически добавляет цикл для каждого цикла отправки электронной почты, так как это действие обрабатывает выходные данные предыдущего действия как коллекцию, а не пакет.
В следующем примере показана область сведений после выбора поля "Для каждого заголовка" в конструкторе, где пакетные элементы — имя коллекции:
Сохраните результаты своих действий. Итак, вы создали получатель пакетов.
Внимание
Если вы используете Visual Studio Code, прежде чем продолжить работу со следующим разделом, сначала разверните ресурс приложения логики пакетного приемника в Azure. В противном случае при создании рабочего процесса приложения логики пакетного получателя невозможно выбрать рабочий процесс приложения логики пакетного отправителя.
Создание отправителя пакетов
Теперь создайте один или несколько рабочих процессов приложения логики пакетной логики отправителей, которые отправляют сообщения в рабочий процесс приложения логики пакетного приемника. В каждом отправителе пакетов укажите получатель пакетов, имя пакета, содержимое сообщения и другие параметры. При необходимости можно указать уникальный ключ раздела, чтобы разделить пакет на логические подмножества для сбора сообщений с помощью этого ключа.
Убедитесь, что вы уже создали и развернули получатель пакетов, так чтобы при создании отправителя пакетов можно было выбрать имеющийся получатель пакетов в качестве места назначения. Получателям пакетов не требуются сведения об отправителях пакетов, но отправители должны знать параметры назначения для отправки сообщений.
Убедитесь, что для получателя и отправителя пакетов используется одна и та же подписка Azure и один регион Azure. В противном случае при создании отправителя пакетов вы не сможете выбрать получателя пакетов, так как они не видны друг другу.
Создайте другой ресурс приложения логики и рабочий процесс с именем BatchSender.
Примечание.
Если у вас есть ресурс приложения логики уровня "Стандартный", не создайте рабочий процесс с отслеживанием состояния, а не рабочий процесс без отслеживания состояния, так как триггер повторения недоступен для рабочих процессов без отслеживания состояния.
Выполните следующие общие действия, чтобы добавить триггер schedule с именем "Повторение".
В этом примере задается интервал и частота выполнения рабочего процесса отправителя каждую минуту.
Добавьте новое действие для отправки сообщений в пакет.
В разделе триггера повторения выберите знак >"плюс" (+) "Добавить новое действие".
В зависимости от того, есть ли рабочий процесс потребления или стандартный рабочий процесс, выполните следующие действия.
Рабочий процесс потребления
После добавления действия рабочего процесса отправки в пакетный триггер появится список и отображается только ресурсы приложения логики с пакетными триггерами, которые существуют в той же подписке Azure и регионе Azure, что и ресурс приложения логики пакетного отправителя.
В списке приложений логики выберите ранее созданное приложение логики для использования в качестве получателя пакетной службы. Когда появятся доступные триггеры, выберите триггер с именем Batch_messages.
Внимание
Если вы используете Visual Studio Code, и вы не видите получателей пакетной службы для выбора, убедитесь, что вы ранее создали и развернули пакетный приемник в Azure. Если вы этого не сделали, узнайте , как развернуть ресурс приложения логики пакетного приемника в Azure.
После завершения нажмите кнопку "Добавить действие".
Стандартный рабочий процесс
После добавления действия отправки в пакетную область действий отображаются следующие свойства на следующем шаге, чтобы указать имя пакета, содержимое сообщения, имя рабочего процесса и имя триггера. Вы можете указать сведения только для рабочего процесса приложения логики пакетного приемника с помощью пакетного триггера, существующего в той же подписке Azure и регионе Azure, что и приложение логики пакетного отправителя.
Задайте следующие свойства действия приемника пакетной службы:
Свойство Description Имя пакета Имя пакета, определенное приложением логики приемника, которое является TestBatch в этом примере
Важно. Имя пакета проверяется во время выполнения и должно соответствовать имени, заданному приложением логики приемника пакетной службы. Изменение имени пакета приводит к сбою в работе приложения логики для отправки пакета.Содержимое сообщения Содержимое сообщения, которое нужно отправить. См. следующий пример использования значения. Имя рабочего процесса
(Только стандартные рабочие процессы)Имя рабочего процесса с триггером пакетной службы. Имя триггера Имя триггера пакетной службы в рабочем процессе приложения логики приемника пакетной службы. В рабочих процессах потребления это значение автоматически заполняется из выбранного приложения логики приемника пакетной службы. Идентификатор рабочего процесса Идентификатор рабочего процесса с именем пакетного триггера для рабочего процесса приложения логики пакетного приемника. В рабочих процессах потребления это значение автоматически заполняется из выбранного приложения логики приемника пакетной службы. В этом примере для значения свойства "Содержимое сообщения" добавьте следующее выражение, которое вставляет текущую дату и время в содержимое сообщения, которое отправляется пакету:
Выберите внутри поля "Содержимое сообщения", чтобы просмотреть параметры динамического содержимого (значок молнии) и редактор выражений (значок функции).
Щелкните значок функции, чтобы открыть редактор выражений.
В редакторе введите функцию utcnow()и нажмите кнопку "Добавить".
Рабочий процесс потребления
Стандартный рабочий процесс
Теперь настройте для пакета секцию.
В области действий отправителя пакетной службы в списке дополнительных параметров выберите следующие свойства:
Свойство Description Имя раздела Необязательный уникальный ключ секции, используемый для разделения целевого пакета на логические подмножества и сбора сообщений на основе этого ключа.
В этом примере см. следующие действия, чтобы добавить выражение, которое создает случайное число от одного до пяти.Идентификатор сообщения Необязательный идентификатор сообщения, созданный глобально уникальным идентификатором (GUID) при пустом состоянии. В этом примере оставьте это значение пустым. Выберите внутри поля "Имя секции" и выберите параметр редактора выражений (значок функции).
В редакторе выражений введите функцию rand(1,6) и нажмите кнопку "Добавить".
В этом примере создается число от одного до пяти. То есть пакет разделяется на пять нумерованных секций, которые динамически задаются этим выражением.
После завершения рабочий процесс отправителя пакетной службы теперь выглядит примерно так, как показано в следующем примере на основе типа рабочего процесса приложения логики:
Рабочий процесс потребления
Стандартный рабочий процесс
Сохраните результаты своих действий.
Тестирование рабочих процессов
Чтобы протестировать решение пакетной обработки, оставьте рабочие процессы приложения логики на несколько минут. Скоро вы начнете получать сообщения электронной почты группами по пять сообщений. Все они будут иметь один ключ секции.
Приложение логики отправителя пакета запускается каждую минуту и создает случайное число от единицы до пяти. Отправитель пакета использует это случайное число в качестве ключа секции для целевого пакета, в котором отправляются сообщения. Когда в пакете собирается пять элементов с одинаковым ключом секции, приложение логики для получения пакетов активируется и отправляет сообщения электронной почты для каждого элемента.
Внимание
После завершения тестирования убедитесь, что вы отключите или удалите рабочий процесс приложения логики BatchSender , чтобы прекратить отправку сообщений и избежать перегрузки папки "Входящие".