我怎么有一个异步函数,写出一个服务总线队列? [英] How do I have an Async function that writes out to a service bus queue?
问题描述
使用的Azure SDK WebJobs,我希望创建一个将接收ServiceBus队列输入和写入ServiceBus队列输出异步功能。异步方法不能有哪些,对BlobStorage例子,似乎是由具有流和TextWriters,而不是周围的工作参数。然而,当我试图做同样的一个ServiceBus参数我收到一个异常。
公共静态无效的异步变换(
[ServiceBusTrigger(%InputQueue%)字符串输入,
[ServiceBus(%OutputQueue%)的TextWriter输出,
TextWriter的日志)
错误索引方法FilterCurrentCpesToNewCpes
无法绑定ServiceBus键入System.IO.TextWriter。
块引用>我收到了类似的消息流。
解决方案由于异步函数不能有输出参数,可以绑定到
ICollector< T>
或IAsyncCollector< T>
并进行添加()操作来发送消息。 ICollector在WebJobs SDK中定义。下面的示例说明了这一点。
公共静态无效的异步变换(
[ServiceBusTrigger(%InputQueue%)字符串输入,
[ServiceBus(%OutputQueue%)IAsyncCollector<串GT;输出,
TextWriter的日志)
{
等待output.AddAsync(输入);
}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.
解决方案Since Async functions cannot have out parameters, you can bind to
ICollector<T>
orIAsyncCollector<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); }
这篇关于我怎么有一个异步函数,写出一个服务总线队列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!