#c# #azure #azure-webjobs #azure-webjobssdk #azure-queues
#c# #лазурный #azure-webjobs #azure-webjobssdk #azure-очереди
Вопрос:
Azure SDK (для очередей) упоминает конкретный список параметров, которые разрешено передавать в функцию webjob.
например
Вы можете получить следующие свойства сообщения, добавив параметры к сигнатуре метода:
DateTimeOffset expirationTime
DateTimeOffset insertionTime
DateTimeOffset nextVisibleTime
string queueTrigger
(содержит текст сообщения)
string id
string popReceipt
int dequeueCount
Если вы хотите работать напрямую с Azure storage API, вы также можете добавить
CloudStorageAccount
параметр.
Я пытаюсь найти, как это делается в их исходном коде, потому что я хочу попробовать поиграть с передачей своих собственных параметров.
Может кто-нибудь, пожалуйста, объяснить / связать, как это возможно / сделано?
Ответ №1:
Такие параметры являются частью контракта статической привязки для конкретной привязки триггера. Каждая привязка триггера определяет свой (возможно, пустой) набор «встроенных» значений привязки. Например. вот исходный код QueueTrigger, где он определяет эти значения. Таким образом, в качестве параметров метода могут быть привязаны только значения в этом статическом контракте.
Среда выполнения проверяет подписи методов на соответствие контракту для триггера во время индексации, поэтому я называю это статическим контрактом. Если один или несколько параметров метода не могут быть разрешены в соответствии с контрактом, возникает ошибка индексации. Во время выполнения, когда запускается метод, контракт привязки заполняется значениями из фактического значения триггера (например, сообщение очереди).
Привязки триггеров расширения могут определять контракты таким же образом. Например, здесь привязка HttpTrigger в Azure Functions добавляет параметры маршрута из шаблона маршрута в его контракт привязки. Например. для шаблона маршрута, например products/{category:alpha}/{id:int?}
, «категория» и «идентификатор» добавляются в контракт и, следовательно, могут быть привязаны непосредственно к параметрам метода. Во время выполнения данные привязки заполняются фактическими значениями времени выполнения из URL-адреса инициирующего HTTP-запроса.
Ответственность за определение этого контракта несет автор привязки триггера, и он не может быть расширен извне.
Ответ №2:
Во-первых, в кратком справочнике WebJobs SDK перечислены параметры привязки к свойствам сообщения очереди, вы можете это проверить.
Во-вторых, если вы хотите передать свой собственный параметр, вы можете попытаться создать новую пользовательскую привязку или настроить существующие привязки.