使用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'。
我收到了类似的消息。
答案 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);
}