Руководство: Реагирование на события Azure Service Bus, полученные с помощью Azure Event Grid, с использованием Azure Logic Apps

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

Предпосылки

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

Замечание

Интеграция Сетки событий с служебной шиной Azure не поддерживает все режимы приема и сценарии. В частности, поведение Peek-Lock и шаблоны обработки сообщений могут отличаться от триггеров шины обслуживания. Если рабочий процесс требует Peek-Lock семантики или расширенного элемента управления расчетами, используйте собственный триггер служебной шины или приемник вместо сетки событий. Убедитесь, что ваша тема и подписка настроены для совместимости сетки событий перед использованием этого примера.

Создайте пространство имен сервисной шины

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

  • Создадите пространство имен служебной шины уровня Премиум.
  • Получите строку подключения.
  • Создадите раздел служебной шины.
  • Создание подписки на раздел. В этом учебнике вам понадобится только одна подписка, поэтому создавать подписки S2 и S3 не нужно.

Отправка сообщений в раздел служебной шины

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

  1. Клонируйте репозиторий GitHub azure-service-bus или загрузите ZIP-файл и извлеките из него файлы.

  2. В Visual Studio перейдите к папке \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2 и откройте файл SBEventGridIntegration.sln.

  3. В окне обозревателя решений разверните проект MessageSender и выберите Program.cs.

  4. Замените <SERVICE BUS NAMESPACE - CONNECTION STRING> строкой подключения к пространству имен служебной шины и <TOPIC NAME> именем раздела.

    const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>";
    const string TopicName = "<TOPIC NAME>";
    
  5. Создайте и запустите программу, чтобы отправить пять тестовых сообщений (const int numberOfMessages = 5;) в раздел служебной шины.

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

Получение сообщений с помощью Logic Apps

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

  1. Нажмите кнопку "+ Создать ресурс", выберите "Интеграция" и выберите "Приложение логики".

    Снимок экрана: меню

  2. На странице "Создание приложения логики" выполните следующие действия.

    1. Выберите параметр "Многотенантное> и нажмите кнопку "Выбрать".

    2. Выберите подписку Azure.

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

    4. Введите имя приложения логики.

    5. Выберите регион для приложения логики.

    6. Выберите Review + Create.

      Снимок экрана: страница

    7. На странице "Просмотр и создание" выберите "Создать", чтобы создать логическое приложение.

  3. На странице завершения развертывания выберите "Перейти к ресурсу ", чтобы перейти на страницу приложения логики .

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

  1. Разверните средства разработки и выберите шаблоны для логических приложений.

    Снимок экрана: страница конструктора приложений логики с выбранным параметром

  2. Выберите пустой рабочий процесс. Откроется конструктор приложений логики .

  3. В конструкторе выполните следующие действия.

    1. Выберите " Добавить триггер" и найдите сетку событий.

    2. Выберите При возникновении события ресурса.

      Снимок экрана: конструктор Logic Apps с выбранным триггером сетки событий.

  4. Выберите Вход.

    Снимок экрана: конструктор Logic Apps с выбранной кнопкой входа.

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

  6. На странице "Когда происходит событие ресурса ", выполните следующие действия.

    1. Для типа ресурса выберите Microsoft.ServiceBus.Namespaces.

    2. Выберите подписку Azure.

    3. Для Resource Name выберите пространство имен Service Bus.

    4. В разделе "Дополнительные параметры" выберите стрелку вниз.

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

      Снимок экрана, показывающий добавление нового параметра типа фильтра-суффикса.

    6. В поле "фильтр суффикса" введите имя подписки на тему Service Bus.

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

  7. + Выберите знак, а затем нажмите кнопку "Добавить действие".

    1. Искать Service Bus.

      Снимок экрана, который показывает выбор Service Bus.

    2. Выберите "Дополнительные сведения", а затем выберите "Получить сообщения из подписки по теме (peek-lock)".

      Снимок экрана, показывающий конструктор Logic Apps с операцией получения сообщений из подписки темы.

    3. Выполните следующие действия.

      1. Введите имя для подключения. Например: получение сообщений из подписки топика.

      2. Убедитесь, что для типа проверки подлинности задан ключ доступа.

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

      4. Выберите Создать новое.

        Снимок экрана, показывающий конструктор Logic Apps с указанной строкой подключения службы Service Bus.

    4. Выберите раздел и подписку.

      Снимок экрана: конструктор Logic Apps с указанным разделом служебной шины и подпиской.

Добавление шага для обработки и завершения полученных сообщений

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

Добавление цикла foreach

  1. + Выберите знак, а затем нажмите кнопку "Добавить действие".

  2. Найдите и выберите «Для каждого».

    Снимок экрана: выбранная операция For-each.

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

  4. Выберите Тело в разделе Получение сообщений из подписки на тему (peek-lock).

    Снимок экрана, показывающий выбор для каждого ввода.

Добавьте шаг внутри цикла foreach для отправки электронного письма с текстом в теле сообщения

  1. В цикле "Для каждого" выберите +,а затем нажмите кнопку "Добавить действие".

    Снимок экрана: нажатие кнопки

  2. Найдите Office 365 и нажмите кнопку "Дополнительные сведения".

  3. Выберите Office 365 Outlook в результатах поиска.

    Снимок экрана: выбор Office 365.

  4. В списке действий выберите "Отправить сообщение электронной почты( версия 2)".

    Снимок экрана: выбор операции отправки электронной почты.

  5. Выберите вход и выполните действия, чтобы создать подключение к Office 365 Outlook.

  6. В окне "Отправить сообщение электронной почты( версия 2) выполните следующие действия:

  7. Выберите внутри текстового поля для Основного текста и выполните следующие действия:

    1. Для Кому, введите адрес электронной почты.

    2. Для темы введите сообщение, полученное из подписки темы служебной шины.

    3. В тексте выберите выражение или введите / и выберите "Вставить выражение".

    4. Введите следующее выражение:

      base64ToString(items('For_each')?['ContentData'])
      
    5. Нажмите кнопку "Добавить".

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

Добавление другого действия в цикле foreach для завершения сообщения

  1. В цикле "Для каждого" выберите +,а затем нажмите кнопку "Добавить действие".

    1. Искать Service Bus.

    2. Выберите "Завершить сообщение в подписке на тему" из списка действий.

      Снимок экрана: выбор Завершить сообщение в подписке на тему.

    3. Выберите раздел служебной шины.

    4. Выберите подписку на раздел.

    5. В маркере блокировки сообщения выберите выражение или введите / и выберите "Вставить выражение".

    6. Выберите динамическое содержимое и выберите маркер блокировки. Нажмите кнопку "Добавить".

      Снимок экрана: поле маркера блокировки.

  2. Нажмите кнопку "Сохранить " на панели инструментов конструктора Logic Apps, чтобы сохранить приложение логики.

    Снимок экрана, показывающий кнопку

Тестирование приложения

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

  2. Перейдите на страницу обзора приложения логики. Затем откройте вкладку "Журнал выполнения" в нижней области. Вы увидите, что приложение логики запускает сообщения, отправленные в раздел. Это может занять несколько минут, прежде чем вы увидите запуск логического приложения. Выберите "Обновить" на панели инструментов, чтобы обновить страницу.

    Снимок экрана: журнал выполнения приложения логики.

  3. Выберите приложение логики для просмотра сведений. Обратите внимание, что он обработал пять сообщений в цикле for.

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

  4. Вы должны получить сообщение электронной почты для каждого сообщения, которое получает приложение логики.

    Снимок экрана: Outlook с сообщениями, полученными из подписки на разделы.

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

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

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

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

  2. Убедитесь, что в подписке Service Bus нет активных сообщений.

    Если на этой странице нет событий, убедитесь, что на странице Service Bus Subscription (Подписка служебной шины) не отображено число активных сообщений. Если там отображается число выше нуля, это значит, что сообщения в подписке по каким-то причинам не пересылаются в функцию обработчика (обработчик подписки на события). Убедитесь, что вы правильно настроили подписку на события.

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

  3. Кроме того, на странице События в пространстве имен Cлужебной шины можно просмотреть доставленные события.

    Снимок экрана: страница

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

    Снимок экрана: страница