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

时间:2014-10-28 06:57:52

标签: 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)
  

错误索引方法' FilterCurrentCpesToNewCpes'

     

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

我收到了类似的消息。

1 个答案:

答案 0 :(得分:15)

由于异步函数不能包含参数,因此可以绑定到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);
    }