Azure Сервисная шина - Подписка - Как отобразить полученное сообщение в выводе Web API - PullRequest
0 голосов
/ 17 апреля 2020

Я использую Azure Сервисную шину для передачи сообщений между двумя. Net основными службами Web API. У меня есть возможность настроить тему / подписку в Azure, а также отправить сообщение в topi c, используя метод публикации Web API. Я застреваю, когда пытаюсь прочитать сообщение, используя подписку. Я написал метод API, который пытается прочитать сообщение, и оно также должно отображать сообщение после чтения его из topi c. Когда я использую. Net core Console APP, я могу прочитать сообщение, но при использовании API сообщение не отображается как вывод API.

Есть ли какие-либо сведения о том, чего мне не хватает? Заранее спасибо.

Код указан ниже:

publi c asyn c Task Get Subscription () {

            subscriptionClient = new SubscriptionClient(ServiceBusConnectionString, TopicName, SubscriptionName);

            RegisterOnMessageHandlerAndReceiveMessages();
            await subscriptionClient.CloseAsync();
     }

publi c void RegisterOnMessageHandlerAndReceiveMessages ( ) {

            var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler);

            subscriptionClient.RegisterMessageHandler(ProcessMessagesAsync, messageHandlerOptions);

    }

private asyn c Задача ProcessMessagesAsyn c (сообщение-сообщение, токен CancellationToken) {
var messageBody = Encoding.UTF8.GetString (message.Body);

            var serviceBusMessage = JsonConvert.DeserializeObject<ServiceBusMessage>(messageBody);

    }

1 Ответ

0 голосов
/ 17 апреля 2020

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

Вам необходимо использовать MessageReceiver. При получении сообщения вы не настраиваете обратный вызов. Вызов приведет к получению одного (или более, если необходимо) сообщения или null, если нет сообщений для получения.

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