Подключение к Служебная шина Azure из рабочих процессов в Azure Logic Apps
Область применения: Azure Logic Apps (Потребление + Стандартный)
В этом руководстве показано, как получить доступ к Служебная шина Azure из рабочего процесса в Azure Logic Apps с помощью соединителя служебная шина. Затем можно создать автоматизированные рабочие процессы, которые выполняются при активации событий в служебной шине или выполнять действия для управления элементами служебной шины, например:
- Отслеживает прибытие (автозавершение) или прием сообщений (с блокировкой при извлечении) в очередях, разделах и подписках на разделы.
- Отправляет сообщения.
- Создает и удаляет подписки на разделы.
- Управляет сообщениями в очередях и подписках на разделы, например, выполняет такие действия, как получение сообщения, получение отложенного сообщения, заполнение, отложение, прерывание и размещение недоставленных сообщений.
- Продлевает блокировку сообщений и сеансы в очередях и подписках на разделы.
- Закрывает сеансы в очередях и разделах.
Вы можете использовать триггеры, которые получают ответы от Служебная шина Azure и предоставляют выходные данные другим действиям в рабочих процессах. Кроме того, выходные данные действий служебной шины могут использоваться другими действиями.
Технический справочник по соединителю
Соединитель служебная шина имеет разные версии, основанные на типе рабочего процесса приложения логики и среде узла.
Приложение логики | Среда | Версия соединителя |
---|---|---|
Потребление | Мультитенантные Azure Logic Apps | Управляемый соединитель, который отображается в коллекции соединителей в разделе "Общая среда выполнения>". Примечание. Триггеры управляемого соединителя служебная шина соответствуют шаблону триггера длинного опроса, что означает, что триггер периодически проверяет наличие сообщений в подписке очереди или раздела. Дополнительные сведения см. в следующей документации: - Справочник по управляемому соединителю служебная шина - Управляемые соединители в Azure Logic Apps |
Стандартные | Azure Logic Apps с одним клиентом и Среда службы приложений версии 3 (только планы Windows) | Управляемый соединитель (размещенный в Azure), который отображается в коллекции соединителей в разделе "Общая среда выполнения>" и встроенный соединитель, который отображается в коллекции соединителей в разделе "Среда выполнения>в приложении" и является поставщиком услуг. Триггеры управляемого соединителя служебная шина соответствуют шаблону триггера длинного опроса, что означает, что триггер периодически проверяет наличие сообщений в подписке очереди или раздела. Служебная шина встроенные триггеры соединителя, отличные от сеанса, соответствуют шаблону триггера непрерывного опроса, полностью управляемому соединителем. Этот шаблон постоянно проверяет наличие сообщений в подписке очереди или раздела. Триггеры сеанса следуют шаблону триггера длинного опроса, но его конфигурация регулируется параметром Функции Azure с именем clientRetryOptions:tryTimeout. Встроенная версия обычно обеспечивает лучшую производительность, возможности, цены и т. д. |
Дополнительные сведения см. в следующей документации: - Справочник по управляемому соединителю служебная шина - служебная шина встроенные операции соединителя - Встроенные соединители в Azure Logic Apps |
Необходимые компоненты
Учетная запись и подписка Azure. Если у вас еще нет подписки Azure, зарегистрируйтесь для получения бесплатной учетной записи Azure.
Пространство имен служебной шины и сущность обмена сообщениями, например очередь. Дополнительные сведения см. в следующей документации:
Рабочий процесс приложения логики, в котором вы подключаетесь к пространству имен служебная шина и сущности обмена сообщениями. Чтобы запустить рабочий процесс с триггером служебная шина, необходимо начать с пустого рабочего процесса. Чтобы использовать действие служебная шина в рабочем процессе, запустите рабочий процесс с любым триггером.
Если ресурс приложения логики использует управляемое удостоверение для проверки подлинности доступа к пространству имен служебная шина и сущности обмена сообщениями, убедитесь, что вы назначили разрешения роли на соответствующих уровнях. Например, для доступа к очереди управляемому удостоверению требуется роль, которая имеет необходимые разрешения для этой очереди.
Каждый ресурс приложения логики должен использовать только одно управляемое удостоверение, даже если рабочий процесс приложения логики обращается к разным сущностям обмена сообщениями.
Каждое управляемое удостоверение, которое обращается к подписке очереди или раздела, должно использовать собственное подключение служебная шина API.
служебная шина операции, которые обмениваются сообщениями с различными сущностями обмена сообщениями и требуют различных разрешений, должны использовать свои собственные служебная шина подключения API.
Дополнительные сведения об управляемых удостоверениях см. в статье "Проверка подлинности доступа к ресурсам Azure с помощью управляемых удостоверений в Azure Logic Apps".
По умолчанию встроенные операции соединителя служебная шина являются бессерверными. Сведения о выполнении этих операций в режиме с отслеживанием состояния см. в разделе "Включить режим с отслеживанием состояния" для встроенных соединителей без отслеживания состояния.
Рекомендации по работе со Служебной шиной Azure
Бесконечные циклы
Внимание
Нужно внимательно выбирать триггер и действия с одинаковым типом соединителя и использовать их для работы с одной и той же сущностью, такой как очередь обмена сообщениями или подписка раздела. При таком сочетании может получиться бесконечный цикл, что приведет к созданию приложения логики, работа которого никогда не будет завершена.
Ограничение на сохраненные сеансы в кэше соединителей
На служебная шина сущность обмена сообщениями, например подписку или раздел, соединитель служебная шина может сохранять до 1500 уникальных сеансов в кэш соединителя. Если число сеансов превышает это максимальное значение, старые сеансы удаляются из кэша. Дополнительные сведения см. в статье Сеансы обмена сообщениями.
Отправка коррелированных сообщений по порядку
При необходимости отправлять связанные сообщения в определенном порядке можно создать рабочий процесс с помощью соединителя служебная шина и последовательного шаблона конвоя. Коррелированные сообщения имеют свойство, определяющее связь между этими сообщениями, например идентификатор сеанса в Служебная шина Azure.
При создании рабочего процесса приложения логики потребления можно выбрать коррелированную доставку по заказу с помощью шаблона сеансов служебной шины, который реализует шаблон последовательного конвоя. Дополнительные сведения см. в разделе Отправка связанных сообщений по порядку с использованием последовательного сопровождения в Azure Logic Apps с помощью служебной шины Microsoft Azure.
Поддержка больших сообщений
Поддержка больших сообщений доступна только для стандартных рабочих процессов при использовании встроенных операций соединителя служебная шина. Например, вы можете получать и большие сообщения с помощью встроенных триггеров и действий соответственно.
Для управляемого соединителя служебная шина максимальный размер сообщения ограничен 1 МБ, даже если вы используете пространство имен уровня "Премиум" служебная шина.
Увеличение времени ожидания для получения и отправки сообщений
В стандартных рабочих процессах, использующих встроенные операции служебная шина, можно увеличить время ожидания для получения и отправки сообщений. Например, чтобы увеличить время ожидания получения сообщения, измените следующий параметр в расширении Функции Azure:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Workflows",
"version": "[1.*, 2.0.0)"
},
"extensions": {
"serviceBus": {
"batchOptions": {
"operationTimeout": "00:15:00"
}
}
}
}
Чтобы увеличить время ожидания отправки сообщения, добавьте параметр приложения ServiceProviders.ServiceBus.MessageSenderOperationTimeout.
триггеры управляемых соединителей служебная шина
Для управляемого соединителя служебная шина все триггеры являются длинными опросами. Этот тип триггера обрабатывает все сообщения, а затем ожидает 30 секунд, чтобы больше сообщений отображалось в очереди или подписке раздела. Если на протяжении 30 секунд новые сообщения не поступают, триггер больше не срабатывает. В противном случае триггер продолжит считывать сообщения, пока очередь или подписка раздела не опустеет. Следующий опрос триггера основывается на интервале повторения, установленном в свойствах триггера.
Некоторые триггеры возвращают одно или несколько сообщений, например триггер Когда одно или несколько сообщений поступает в очередь (автозавершение). Когда такие триггеры срабатывают, они возвращают от одного до нескольких сообщений. Количество сообщений определяется в свойстве триггера Максимальное число сообщений.
Примечание.
Триггер автозавершения автоматически завершает сообщение, но завершение происходит только при следующем вызове Служебной шины. Это поведение может повлиять на дизайн рабочего процесса. Например, избегайте изменения параллелизма в триггере автоматического завершения, так как это изменение может привести к дублированию сообщений, если рабочий процесс вводит регулирование. Изменение элемента управления параллелизмом создает следующие условия:
Регулирование триггеров пропускается с
WorkflowRunInProgress
помощью кода.Операция завершения не будет выполняться.
Следующий запуск триггера происходит после интервала опроса.
Необходимо установить значение длительности блокировки служебной шины, превышающее интервал опроса. Однако, несмотря на этот параметр, сообщение по-прежнему может завершиться, если рабочий процесс остается в состоянии регулирования в следующем интервале опроса.
Если необходимо изменить параллелизм в триггере автоматического завершения служебная шина, не внесите это изменение, прежде чем первоначально сохранить рабочий процесс. Сначала создайте и сохраните рабочий процесс перед изменением триггера, чтобы изменить параллелизм.
служебная шина встроенные триггеры соединителя
Для него служебная шина встроенный соединитель, не сеансовые триггеры следует шаблону триггера непрерывного опроса, который полностью управляется соединителем. Этот шаблон постоянно проверяет наличие сообщений в подписке очереди или раздела. Триггеры сеанса следуют шаблону триггера длинного опроса, при этом его конфигурация регулируется параметром Функции Azure с именем clientRetryOptions:tryTimeout. В настоящее время параметры конфигурации для встроенного триггера служебная шина используются между расширением узла Функции Azure, которое определяется в файле host.json приложения логики и параметрами триггера, определенными в рабочем процессе приложения логики, которые можно настроить с помощью конструктора или представления кода. В этом разделе рассматриваются оба расположения параметров.
В стандартных рабочих процессах некоторые триггеры, такие как "Когда сообщения доступны в триггере очереди ", могут возвращать одно или несколько сообщений. При срабатывании этих триггеров они возвращаются между одним и числом сообщений. Для этого типа триггера и, где параметр "Максимальное число сообщений " не поддерживается, можно по-прежнему контролировать количество сообщений, полученных с помощью свойства maxMessageBatchSize в файле host.json . Чтобы найти этот файл, см. раздел "Изменение параметров узла и приложения" для приложений логики "Стандартный".
"extensions": { "serviceBus": { "maxMessageBatchSize": 25 } }
Вы также можете включить параллелизм в триггере служебная шина с помощью конструктора или кода:
"runtimeConfiguration": { "concurrency": { "runs": 100 } }
При настройке параллелизма с помощью пакета сохраните количество одновременных запусков больше общего размера пакета. Таким образом, чтение сообщений не переходит в состояние ожидания и всегда выбирается при чтении. В некоторых случаях триггер может иметь до двух размеров пакета.
Если включить параллелизм, ограничение SplitOn уменьшается до 100 элементов. Это поведение верно для всех триггеров, а не только триггера служебная шина. Убедитесь, что указанный размер пакета меньше этого ограничения для любого триггера, в котором можно включить параллелизм.
Некоторые сценарии существуют, когда триггер может превышать параметры параллелизма. Вместо сбоя этих запусков Azure Logic Apps помещает их в ожидание до тех пор, пока они не будут запущены. Максимальный параметрWaitingRuns определяет количество запусков, разрешенных в состоянии ожидания:
"runtimeConfiguration": { "concurrency": { "runs": 100, "maximumWaitingRuns": 50 } }
С помощью триггера служебная шина убедитесь, что вы тщательно протестируете эти изменения, чтобы запуски не ждали больше времени ожидания, чем время ожидания блокировки сообщения. Дополнительные сведения о значениях по умолчанию см. в разделе "Ограничения параллелизма и отмены пакетной обработки".
Если включить параллелизм, по умолчанию между пакетными считываниями существует 30-секундная задержка. Эта задержка замедляет триггер для достижения следующих целей:
Уменьшите количество вызовов хранилища, отправляемых для проверки количества запусков, к которым применяется параллелизм.
Имитируйте поведение триггера управляемого соединителя служебная шина, который имеет 30-секундный опрос, когда сообщения не найдены.
Эту задержку можно изменить, но тщательно протестировать все изменения в значении по умолчанию:
"workflow": { "settings": { "Runtime.ServiceProviders.FunctionTriggers.DynamicListenerEnableDisableInterval": "00:00:30" } }
Шаг 1. Проверка доступа к пространству имен служебная шина
Чтобы убедиться, что ресурс приложения логики имеет разрешения на доступ к пространству имен служебная шина, выполните следующие действия.
В портал Azure откройте пространство имен служебная шина.
В меню пространства имен в разделе Параметры выберите Политики общего доступа. В разделе Утверждения убедитесь, что у вас есть разрешения на управление для этого пространства имен.
Шаг 2. Получение требований к проверке подлинности подключения
Позже при первом добавлении триггера или действия служебная шина вам будет предложено получить сведения о подключении, включая тип проверки подлинности подключения. В зависимости от типа рабочего процесса приложения логики, версии соединителя служебная шина и выбранного типа проверки подлинности вам потребуется следующее:
Проверка подлинности управляемого соединителя (рабочие процессы потребления и уровня "Стандартный")
Тип аутентификации | Необходимые сведения |
---|---|
Ключ доступа | Строка подключения для пространства имен служебная шина. Дополнительные сведения см. в статье Get строка подключения для пространства имен служебная шина |
Интегрированная microsoft Entra | URL-адрес конечной точки для пространства имен служебная шина. Дополнительные сведения см. в статье Get Endpoint URL for служебная шина namespace. |
Управляемое удостоверение Logic Apps | URL-адрес конечной точки для пространства имен служебная шина. Дополнительные сведения см. в статье Get Endpoint URL for служебная шина namespace. |
Встроенная проверка подлинности соединителя (только стандартные рабочие процессы)
Тип аутентификации | Необходимые сведения |
---|---|
Строка подключения | Строка подключения для пространства имен служебная шина. Дополнительные сведения см. в статье Get строка подключения для пространства имен служебная шина |
Active Directory OAuth | — Полное имя вашего пространства имен служебная шина, например <имя пространства имен service-Bus-namespace.servicebus.windows.net.> Дополнительные сведения см. в статье "Получение полного имени" для пространства имен служебная шина. Сведения о других значениях свойств см. в разделе OAuth с идентификатором Microsoft Entra. |
Управляемое удостоверение | Полное имя пространства имен служебная шина, например <имя пространства имен Service-Bus-namespace.servicebus.windows.net.> Дополнительные сведения см. в статье "Получение полного имени" для пространства имен служебная шина. |
Получение строка подключения для пространства имен служебная шина
Чтобы создать подключение при добавлении триггера или действия служебная шина, необходимо иметь строка подключения для пространства имен служебная шина. Строка подключения начинается с префикса sb://.
В портал Azure откройте пространство имен служебная шина.
В меню пространства имен в разделе Параметры выберите Политики общего доступа.
В области Политики общего доступа щелкните RootManageSharedAccessKey.
Рядом с основным или вторичным строка подключения нажмите кнопку копирования.
Примечание.
Чтобы проверить, находится ли строка для пространства имен, а не определенной сущности обмена сообщениями, выполните поиск строка подключения для
EntityPath
параметра. Если вы найдете этот параметр, строка подключения предназначен для определенной сущности и не является правильной строкой для использования с рабочим процессом.Сохраните строку подключения для дальнейшего использования.
Получение URL-адреса конечной точки для пространства имен служебная шина
Если вы используете управляемый соединитель служебная шина, этот URL-адрес конечной точки требуется, если выбрать тип проверки подлинности для интегрированного или управляемого удостоверения Logic Apps в Microsoft Entra. URL-адрес конечной точки начинается с префикса sb:// .
В портал Azure откройте пространство имен служебная шина.
В меню пространства имен в разделе "Параметры" выберите "Свойства".
В разделе "Свойства" рядом с конечной точкой служебная шина скопируйте URL-адрес конечной точки и сохраните его для последующего использования при необходимости предоставить URL-адрес конечной точки служебной шины.
Получение полного имени для пространства имен служебная шина
В портал Azure откройте пространство имен служебная шина.
В меню пространства имен выберите "Обзор".
На панели обзора найдите свойство имени узла и скопируйте полное имя, которое выглядит как< your-Service-Bus-namespace.servicebus.windows.net.>
Шаг 3. Вариант 1. Добавление триггера служебная шина
Следующие шаги используют портал Azure, но с соответствующим расширением Azure Logic Apps можно также использовать следующие средства для создания рабочих процессов приложения логики:
- Рабочие процессы потребления: Visual Studio Code
- Стандартные рабочие процессы: Visual Studio Code
В портал Azure откройте ресурс приложения логики потребления с пустым рабочим процессом в конструкторе.
В конструкторе выполните следующие общие действия, чтобы добавить нужный триггер Служебная шина Azure.
Этот пример продолжается с триггером с именем "Когда сообщение получено в очереди (автозаверщение)".
При появлении запроса укажите следующие сведения для подключения. По завершении нажмите Создать.
Свойство Обязательное поле Описание Имя подключения Да Имя подключения Тип проверки подлинности Да Тип проверки подлинности, используемый для доступа к пространству имен служебная шина. Дополнительные сведения см. в статье "Проверка подлинности управляемого соединителя". Строка подключения Да Строка подключения, скопированные и сохраненные ранее. Например, это подключение использует проверку подлинности ключа доступа и предоставляет строка подключения для пространства имен служебная шина:
После появления поля сведений о триггере укажите необходимые сведения, например:
Свойство Обязательное поле Описание Имя очереди Да Выбранная очередь для доступа Тип очереди No Тип выбранной очереди Как часто вам нужно проверять наличие элементов? Да Интервал опроса и частота проверки очереди элементов Чтобы добавить любые другие доступные свойства в триггер, откройте список новых параметров и выберите нужные свойства.
Добавьте все действия, необходимые рабочему процессу.
Например, можно добавить действие, которое отправляет сообщение электронной почты при поступлении нового сообщения. Когда триггер проверяет очередь и находит новое сообщение, рабочий процесс выполняет выбранные действия для найденного сообщения.
Закончив работу, сохраните свой рабочий процесс. На панели инструментов конструктора выберите Сохранить.
Шаг 3. Вариант 2. Добавление действия служебная шина
Следующие действия используют портал Azure, но с соответствующим расширением Azure Logic Apps можно также использовать следующие средства для создания рабочих процессов приложения логики:
- Рабочие процессы потребления: Visual Studio Code
- Стандартные рабочие процессы: Visual Studio Code
В портал Azure откройте приложение логики потребления и рабочий процесс в конструкторе.
В конструкторе выполните следующие общие действия, чтобы добавить нужное действие Служебная шина Azure.
В этом примере продолжается действие "Отправить сообщение ".
При появлении запроса укажите следующие сведения для подключения. По завершении нажмите Создать.
Свойство Обязательное поле Описание Имя подключения Да Имя подключения Тип проверки подлинности Да Тип проверки подлинности, используемый для доступа к пространству имен служебная шина. Дополнительные сведения см. в статье "Проверка подлинности управляемого соединителя". Строка подключения Да Строка подключения, скопированные и сохраненные ранее. Например, это подключение использует проверку подлинности ключа доступа и предоставляет строка подключения для пространства имен служебная шина:
После появления поля сведений о действии укажите необходимые сведения, например:
Свойство Обязательное поле Описание Имя очереди и раздела Да Выбранная очередь или назначение раздела для отправки сообщения Идентификатор сеанса No Идентификатор сеанса при отправке сообщения в очередь или раздел с поддержкой сеансов Системные свойства No - Не допускается
- Сведения о выполнении: добавьте сведения о свойстве метаданных о выполнении в качестве настраиваемых свойств в сообщении.Чтобы добавить другие доступные свойства в действие, откройте список новых параметров и выберите нужные свойства.
Добавьте любые другие действия, необходимые рабочему процессу.
Например, вы можете добавить действие, которое отправляет электронное сообщение для подтверждения отправки вашего сообщения.
Закончив работу, сохраните свой рабочий процесс. На панели инструментов конструктора выберите Сохранить.
служебная шина встроенные параметры приложения соединителя
В ресурсе приложения логики уровня "Стандартный" встроенный соединитель служебная шина включает параметры приложения, которые управляют различными порогами, например время ожидания отправки сообщений и количество отправителей сообщений на ядро процессора в пуле сообщений. Дополнительные сведения см. в справочнике по параметрам приложения — local.settings.json.
Чтение сообщений из очередей недоставленных писем с помощью встроенных триггеров служебная шина
В стандартных рабочих процессах для чтения сообщения из очереди недоставленных писем в очереди или подписке раздела выполните следующие действия, используя указанные триггеры:
В пустом рабочем процессе в зависимости от вашего сценария добавьте встроенный триггер соединителя служебная шина с именем "Когда сообщения доступны в очереди" или "Когда сообщение доступно в подписке на раздел" (peek-lock).
В триггере задайте следующие значения параметров, чтобы указать очередь или очередь недоставленных писем подписки раздела по умолчанию, доступ к которой можно получить как к любой другой очереди:
Когда сообщения доступны в триггере очереди: задайте параметру имени очереди значение queuename/$deadletterqueue.
Если сообщение доступно в триггере подписки раздела (peek-lock): задайте параметру имени раздела значение topicname/Subscriptions/subscriptionname/$deadletterqueue.
Дополнительные сведения см. в служебная шина обзоре очередей недоставленных писем.
Устранение неполадок
Задержки в обновлении рабочего процесса в силу
Если интервал опроса триггера служебная шина невелик, например 10 секунд, обновления рабочего процесса могут не входить в силу до 10 минут. Чтобы обойти эту проблему, можно отключить ресурс приложения логики, внести изменения и снова включить ресурс приложения логики.
Сеанс недоступен или может быть заблокирован другим получателем
Иногда такие операции, как завершение сообщения или продление сеанса, могут привести к следующей ошибке:
{
"status": 400,
"error": {
"message": "No session available to complete the message with the lock token 'ce440818-f26f-4a04-aca8-555555555555'."
}
}
Иногда триггер на основе сеанса может завершаться следующей ошибкой:
{
"status": 400,
"error": {
"message": "Communication with the Service Bus namespace 'xxxx' and 'yyyy' entity failed. The requested session 'zzzz' cannot be accepted. It may be locked by another receiver."
}
}
Соединитель служебная шина использует кэш в памяти для поддержки всех операций, связанных с сеансами. Получатель сообщений служебная шина кэшируется в памяти экземпляра роли (виртуальной машины), получающего сообщения. Чтобы обработать все запросы, все вызовы подключения направляются в тот же экземпляр роли. Это необходимо, так как для всех операций служебная шина в сеансе требуется тот же получатель, который получает сообщения для определенного сеанса.
Из-за таких причин, как обновление инфраструктуры, развертывание соединителя и т. д., вероятность того, что запросы не направляются в тот же экземпляр роли. Если это событие произойдет, запросы завершаются ошибкой по одной из следующих причин:
Получатель, выполняющий операции в сеансе, недоступен в экземпляре роли, который обслуживает запрос.
Новый экземпляр роли пытается получить сеанс, который либо истек в старом экземпляре роли, либо не был закрыт.
Если эта ошибка возникает только иногда, ожидается ошибка. При возникновении ошибки сообщение по-прежнему сохраняется в служебной шине. Следующий триггер или рабочий процесс пытается снова обработать сообщение.