Я работаю над микросервисами (использующими приложения-функции Azure), которые содержат функции Azure на основе ServiceBusTrigger
, которые срабатывают при вставке сообщения в очередь служебной шины .
Iпытаюсь определить наилучший способ привязки выходных значений к нескольким целям (например, CosmosDB и IoT Hub).От того, будет ли метод помечен как асинхронный, будет зависеть, как мне следует решить эту проблему.
Насколько я знаю, вы обычно обрабатываете привязку вывода с помощью асинхронной функции с помощью * 1010.* аннотация;однако в моем случае использования мне нужно вернуть два разных значения двум отдельным целям (например, CosmosDb и IoT Hub).Я не думаю, что это то, чего я могу достичь с помощью привязки возвращаемого значения или привязки выходной переменной, поскольку у вас не может быть параметра out
с асинхронным методом, и вы можете определить несколько возвращаемых значений с помощью подхода [return: ...]
.
Казалось бы, мой единственный вариант (если я пошел по асинхронному маршруту) - вручную вызывать методы SDK в функции Azure для вызова служб независимо от любых выходных значений.Я стараюсь не делать этого, поскольку предпочтительным подходом является привязка выходных данных.
При создании новой функции Azure на основе ServiceBusTrigger
я заметил, что сгенерированная сигнатура метода не помечен как async
по умолчанию.
Это отличается от HttpTrigger
, который равен помечен как async
вне коробки.
Может кто-нибудь помочь мне понять причину этого?Какие последствия масштабирования связаны с одним против другого?
В традиционном смысле я понимаю, почему вы обычно отмечаете HttpTrigger
как асинхронный;однако я не понимаю причин, по которым ServiceBusTrigger
не является асинхронным
Мне нужно понять этот бит, прежде чем я смогу перейти к укреплению своего подхода к выводам.