Стандарт приложения логики: проблемы с сеансом служебной шины

У меня есть стандартное приложение Azure Logic App. Это имеет два рабочих процесса; RunBre и StubSatellite.

Желаемый поток взаимодействия показан на следующей диаграмме:

Рабочий процесс RunBre генерирует руководство в качестве идентификатора сеанса. Затем он публикует это в теме служебной шины:

Это сообщение правильно обрабатывается рабочим процессом StubSatellite:

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

Моя проблема возникает, когда рабочий процесс RunBre пытается использовать ответное сообщение из очереди. Я использую встроенное действие «Получить сообщения из сеанса очереди». Я передаю ему правильный идентификатор сеанса в качестве параметра, но он выдает следующую ошибку:

{
  "code": "ServiceProviderActionFailed",
  "message": "The service provider action failed with error code 'ServiceOperationFailed' and error message 'The Service Bus session was not found to perform operation 'getMessagesFromQueueSession' on session id '30cb936a-4e11-4126-8047-4ac6f4b876b8'.'."
}

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

http-клиент --запрос синхронизации--> диспетчер процессов приложения логики --> тема шины svc --> работник приложения логики --> очередь служебной шины --> диспетчер процессов приложения логики --синхронизация ответа --> клиент http

Можете ли вы поделиться схемой конструкции RunBre?

Ikhtesam Afrin 16.08.2024 05:50

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

Rob Bowman 16.08.2024 09:39

Вам нужен идентификатор сеанса при получении сообщения, а также готовы ли вы не отправлять сообщение с идентификатором сеанса и не получать его?

Ikhtesam Afrin 16.08.2024 12:15
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

В качестве обходного пути я добавил локальную функцию, которая использует пакет nuget Azure.Messaging.ServiceBus для чтения из очереди сеанса:

var client = new ServiceBusClient(serviceBusNamespace, credential);

var receiver = await client.AcceptSessionAsync(queueName, sessionId);
ServiceBusReceivedMessage message = await receiver.ReceiveMessageAsync();

Другие вопросы по теме

Как правильно зарегистрировать и запустить процессор служебной шины Azure в службе приложений Azure
Скрипты для уведомления об очереди недоставленных писем
Время ожидания метода SendBatchAsync служебной шины Azure в устаревшем веб-API
Развертывание отфильтрованных метрик на информационной панели Azure с помощью Bicep
Группы очередей служебной шины Azure
Получение сообщения с помощью Azure.Messaging.ServiceBus, отправленного с помощью Microsoft.ServiceBus.Messaging (ServiceBus.v1_1)
Служебная шина Azure — ServiceBusProcessorClient-Java — Trytimeout и обработка одновременных сеансов
Как решить проблему «ManagedIdentityCredential.GetToken не удалось получить токен доступа». при использовании Azure ServiceBusTrigger и управляемого удостоверения?
Невозможно распечатать/использовать выходные данные сообщения служебной шины Azure, хранящиеся как System.Collections.Hashtable
Служебная шина Azure: сообщение от отправителя дважды ставится в очередь