首页 文章

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

提问于
浏览
9

使用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' .

我收到了类似Stream的消息 .

1 回答

  • 13

    由于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);
        }
    

相关问题