如何将异步函数写入服务总线队列?

Mic*_*ltu 10 c# azure azure-webjobs azure-webjobssdk

使用Azure WebJobs SDK,我想创建一个异步函数,它将接收ServiceBus队列输入并写入ServiceBus队列输出.异步方法不能有参数,对于BlobStorage上的示例,似乎可以通过使用Streams和TextWrite来解决这些参数.但是,当我尝试使用ServiceBus参数执行相同操作时,我收到异常.

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

错误索引方法'FilterCurrentCpesToNewCpes'

无法绑定ServiceBus以键入"System.IO.TextWriter".

我收到Stream的类似消息.

小智 15

由于Async函数不能有out参数,因此可以绑定到ICollector<T>IAsyncCollector<T>执行Add()操作来发送消息.ICollector在WebJobs SDK中定义.

以下示例演示了这一点

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