2014-10-28 2 views
8

Используя Azure WebJobs SDK, я хочу создать асинхронную функцию, которая будет получать вход в очередь ServiceBus и записать в очередь очереди ServiceBus. Асинхронные методы не могут иметь параметры, которые, например, для BlobStorage, работают, используя Streams и TextWriters. Однако, когда я пытаюсь сделать то же самое с параметром ServiceBus, я получаю исключение.Как получить функцию Async, которая записывается в очередь служебной шины?

public static async void Transform(
    [ServiceBusTrigger("%InputQueue%")] String input, 
    [ServiceBus("%OutputQueue%")] TextWriter output, 
    TextWriter log) 

Ошибка метод индексации 'FilterCurrentCpesToNewCpes'

Невозможно привязать ServiceBus к типу 'System.IO.TextWriter'.

Получено похожее сообщение для Stream.

ответ

12

Поскольку функции Async не могут иметь параметры, вы можете привязываться к ICollector<T> или IAsyncCollector<T> и выполнять операцию Add() для отправки сообщения. ICollector определен в SDK WebJobs.

Следующий образец демонстрирует это.

public static async void Transform(
[ServiceBusTrigger("%InputQueue%")] string input, 
[ServiceBus("%OutputQueue%")] IAsyncCollector<string> output, 
TextWriter log) 
    {    
     await output.AddAsync(input); 
    }