How do I have an Async function that writes out to a service bus queue?

我只是一个虾纸丫 提交于 2019-12-23 07:26:45

问题


Using the Azure WebJobs SDK, I want to create an async function that will receive ServiceBus queue input and write to a ServiceBus queue output. Async methods cannot have out parameters which, for examples on BlobStorage, appears to be worked around by having Streams and TextWriters instead. However, when I try to do the same with a ServiceBus parameter I receive an exception.

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

Error indexing method 'FilterCurrentCpesToNewCpes'

Can't bind ServiceBus to type 'System.IO.TextWriter'.

I receive a similar message for Stream.


回答1:


Since Async functions cannot have out parameters, you can bind to ICollector<T> or IAsyncCollector<T> and perform Add() operation to send a message. ICollector is defined in the WebJobs SDK.

Following sample demonstrates this.

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


来源:https://stackoverflow.com/questions/26602490/how-do-i-have-an-async-function-that-writes-out-to-a-service-bus-queue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!