У меня есть роль рабочего Azure, которая читает сообщения из очереди служебной шины, используя директиву для сообщений об ошибке .Azure WorkerRole API Calls async/await
Вот пример код:
public override void Run()
{
Client.OnMessage((receivedMessage) => {
var APIResponse = Call3rdPartyAPIUsingMessageData(receivedMessage)
}, options);
}
Вопрос заключается в том, что третий вызов стороны API занимает много времени. Кажется глупым сидеть и ждать, пока вызов API завершится синхронно.
Что бы я хотел, это использовать async/await
, чтобы сохранить тему. Смысл, я хочу, чтобы рабочая роль «приостанавливала это сообщение» и обрабатывала следующее сообщение в очереди. Когда вызов API третьей стороны завершается, вернитесь назад и завершите операцию.
Рассматривая другие ответы на stackoverflow (например: here), кажется, что использование функции async/await
в роли рабочего - это не очень хорошая идея.
Какие у меня варианты?
Посмотрите на TPL DataFlow. –
Интересно. В лазурном режиме какое приложение/сервис/webjob/etc будет использовать TPL DataFlow. –
Сколько одновременных вызовов вы хотели бы сделать на служебной шине? –