Как получить асинхронную функцию, которая записывает данные в очередь служебной шины?

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

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

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

Не удается привязать ServiceBus к типу «System.IO.TextWriter».

Я получаю аналогичное сообщение для Stream.


person Micah Zoltu    schedule 28.10.2014    source источник


Ответы (1)


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

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

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