Подключение Служебная шина Azure из рабочих процессов в Azure Logic Apps

Область применения: Azure Logic Apps (Потребление + Стандартный)

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

  • Отслеживает прибытие (автозавершение) или прием сообщений (с блокировкой при извлечении) в очередях, разделах и подписках на разделы.
  • Отправляет сообщения.
  • Создает и удаляет подписки на разделы.
  • Управляет сообщениями в очередях и подписках на разделы, например, выполняет такие действия, как получение сообщения, получение отложенного сообщения, заполнение, отложение, прерывание и размещение недоставленных сообщений.
  • Продлевает блокировку сообщений и сеансы в очередях и подписках на разделы.
  • Закрывает сеансы в очередях и разделах.

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

технический справочник по Подключение or

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

Приложение логики Среда Версия соединителя
Потребление Мультитенантные Azure Logic Apps Управляемый соединитель (класс Standard). Дополнительные сведения см. в следующей документации:

- Справочник по управляемому соединителю служебная шина
- Управляемые соединители в Azure Logic Apps
Потребление Среда службы интеграции (ISE) Управляемый соединитель (стандартный класс) и версия ISE, которая имеет разные ограничения сообщений, отличные от класса Standard. Дополнительные сведения см. в следующей документации:

- Справочник по управляемому соединителю служебная шина
- Ограничения для сообщений ISE
- Управляемые соединители в Azure Logic Apps
Стандартные Azure Logic Apps с одним клиентом и Среда службы приложений версии 3 (только планы Windows) Управляемый соединитель (размещенный в Azure) и встроенный соединитель, основанный на поставщике услуг. Встроенная версия обычно обеспечивает лучшую производительность, возможности, цены и т. д.

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

Дополнительные сведения см. в следующей документации:

- Справочник по управляемому соединителю служебная шина
- служебная шина встроенные операции соединителя
- Встроенные соединители в 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 помощью кода.

    • Операция завершения не будет выполняться.

    • Следующий запуск триггера происходит после интервала опроса.

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

    Однако если включить параметр параллелизма триггера служебная шина, значение по умолчанию для maximumWaitingRuns свойства равно 10. На основе параметра блокировки служебная шина сущности и продолжительности выполнения рабочего процесса это значение по умолчанию может быть слишком большим и может привести к исключению "блокировка потеряна". Чтобы определить оптимальное значение для своего сценария, начните тестирование со значением 1 или 2 для свойства maximumWaitingRuns. Чтобы изменить максимальное значение ожидания выполнения, просмотрите ограничение на ожидание изменений.

служебная шина встроенные триггеры соединителя

В настоящее время параметры конфигурации для встроенного триггера служебная шина используются между расширением узла Функции 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. Проверка доступа к пространству имен служебная шина

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

  1. В портал Azure откройте пространство имен служебная шина.

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

    Снимок экрана: выбранные портал 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.> Дополнительные сведения см. в статье "Получение полного имени" для пространства имен служебная шина. Для других значений свойств просмотрите проверку подлинности Open Authentication в Microsoft Entra ID.
Управляемое удостоверение Полное имя пространства имен служебная шина, например <имя пространства имен Service-Bus-namespace.servicebus.windows.net.> Дополнительные сведения см. в статье "Получение полного имени" для пространства имен служебная шина.

Получение строка подключения для пространства имен служебная шина

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

  1. В портал Azure откройте пространство имен служебная шина.

  2. В меню пространства имен в разделе Параметры выберите Политики общего доступа.

  3. В области Политики общего доступа щелкните RootManageSharedAccessKey.

  4. Рядом с основным или вторичным строка подключения нажмите кнопку копирования.

    Снимок экрана: пространство имен служебная шина строка подключения и выбранная кнопка копирования.

    Примечание.

    Чтобы проверка, что строка находится в пространстве имен, а не для определенной сущности обмена сообщениями, выполните поиск строка подключения для EntityPath параметра. Если вы найдете этот параметр, строка подключения предназначен для определенной сущности и не является правильной строкой для использования с рабочим процессом.

  5. Сохраните строку подключения для дальнейшего использования.

Получение URL-адреса конечной точки для пространства имен служебная шина

Если вы используете управляемый соединитель служебная шина, этот URL-адрес конечной точки требуется, если выбрать тип проверки подлинности для интегрированного или управляемого удостоверения Logic Apps в Microsoft Entra. URL-адрес конечной точки начинается с префикса sb:// .

  1. В портал Azure откройте пространство имен служебная шина.

  2. В меню пространства имен в разделе Параметры выберите "Свойства".

  3. В разделе "Свойства" рядом с конечной точкой служебная шина скопируйте URL-адрес конечной точки и сохраните его для последующего использования при необходимости предоставить URL-адрес конечной точки служебной шины.

Получение полного имени для пространства имен служебная шина

  1. В портал Azure откройте пространство имен служебная шина.

  2. В меню пространства имен выберите "Обзор".

  3. На панели обзора найдите свойство имени узла и скопируйте полное имя, которое выглядит как< your-Service-Bus-namespace.servicebus.windows.net.>

Шаг 3. Вариант 1. Добавление триггера служебная шина

Следующие шаги используют портал Azure, но с соответствующим расширением Azure Logic Apps можно также использовать следующие средства для создания рабочих процессов приложения логики:

  1. В портал Azure откройте ресурс приложения логики потребления с пустым рабочим процессом в конструкторе.

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

    Этот пример продолжается с триггером с именем "Когда сообщение получено в очереди (автозаверщение)".

  3. При появлении запроса укажите следующие сведения для подключения. По завершении нажмите Создать.

    Свойство Обязательное поле Описание
    Имя подключения Да Имя подключения
    Тип проверки подлинности Да Тип проверки подлинности, используемый для доступа к пространству имен служебная шина. Дополнительные сведения см. в статье "Проверка подлинности управляемого соединителя".
    Строка подключения Да Строка подключения, скопированные и сохраненные ранее.

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

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

  4. После появления поля сведений о триггере укажите необходимые сведения, например:

    Свойство Обязательное поле Описание
    Имя очереди Да Выбранная очередь для доступа
    Тип очереди No Тип выбранной очереди
    Как часто вам нужно проверять наличие элементов? Да Интервал опроса и частота проверка очереди для элементов

    Снимок экрана: рабочий процесс потребления, триггер служебная шина и пример сведений о триггере.

  5. Чтобы добавить любые другие доступные свойства в триггер, откройте список новых параметров и выберите нужные свойства.

  6. Добавьте все действия, необходимые рабочему процессу.

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

  7. Закончив работу, сохраните свой рабочий процесс. На панели инструментов конструктора выберите Сохранить.

Шаг 3. Вариант 2. Добавление действия служебная шина

Следующие шаги используют портал Azure, но с соответствующим расширением Azure Logic Apps можно также использовать следующие средства для создания рабочих процессов приложения логики:

  1. В портал Azure откройте приложение логики потребления и рабочий процесс в конструкторе.

  2. В конструкторе выполните следующие общие действия, чтобы добавить нужное действие Служебная шина Azure.

    В этом примере продолжается действие "Отправить сообщение ".

  3. При появлении запроса укажите следующие сведения для подключения. По завершении нажмите Создать.

    Свойство Обязательное поле Описание
    Имя подключения Да Имя подключения
    Тип проверки подлинности Да Тип проверки подлинности, используемый для доступа к пространству имен служебная шина. Дополнительные сведения см. в статье "Проверка подлинности управляемого соединителя".
    Строка подключения Да Строка подключения, скопированные и сохраненные ранее.

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

    Снимок экрана: рабочий процесс потребления, действие служебная шина и пример сведений о подключении.

  4. После появления поля сведений о действии укажите необходимые сведения, например:

    Свойство Обязательное поле Описание
    Имя очереди и раздела Да Выбранная очередь или назначение раздела для отправки сообщения
    Идентификатор сеанса No Идентификатор сеанса при отправке сообщения в очередь или раздел с поддержкой сеансов
    Системные свойства No - Не допускается
    - Сведения о выполнении: добавьте сведения о свойстве метаданных о выполнении в качестве настраиваемых свойств в сообщении.

    Снимок экрана: рабочий процесс потребления, действие служебная шина и примеры сведений об действии.

  5. Чтобы добавить другие доступные свойства в действие, откройте список новых параметров и выберите нужные свойства.

  6. Добавьте любые другие действия, необходимые рабочему процессу.

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

  7. Закончив работу, сохраните свой рабочий процесс. На панели инструментов конструктора выберите Сохранить.

служебная шина встроенные параметры приложения соединителя

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

Чтение сообщений из очередей недоставленных писем с помощью встроенных триггеров служебная шина

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

  1. В пустом рабочем процессе в зависимости от вашего сценария добавьте встроенный триггер соединителя служебная шина с именем "Когда сообщения доступны в очереди" или "Когда сообщение доступно в подписке на раздел" (peek-lock).

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

    • Когда сообщения доступны в триггере очереди: задайте параметру имени очереди значение queuename/$deadletterqueue.

    • Если сообщение доступно в триггере подписки раздела (peek-lock): задайте параметру имени раздела значение topicname/Subscriptions/subscriptionname/$deadletterqueue.

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

Устранение неполадок

Задержки в обновлении рабочего процесса в силу

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

Сеанс недоступен

Иногда такие операции, как завершение сообщения или продление сеанса, могут привести к следующей ошибке:

{
  "status": 400,
  "message": "No session available to complete the message with the lock token 'ce440818-f26f-4a04-aca8-555555555555'. clientRequestId: facae905-9ba4-44f4-a42a-888888888888",
  "error": {
    "message": "No session available to complete the message with the lock token 'ce440818-f26f-4a04-aca8-555555555555'."
  }
}

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

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

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

Следующие шаги