通过java azure function app向存储队列添加多个条目
我很感激目前Azure函数中的Java支持是预览版,但我想知道该功能是否缺失或找不到 我试图解决的问题如下。创建一个HTTPTriger,它将接收一个日期参数,然后读取一个Blob存储,并将所有以该参数开头(以.qmsg结尾)的Blob的URI放入队列中进行进一步处理 C#示例代码使用ICollector显示以下模式通过java azure function app向存储队列添加多个条目,java,azure,azure-functions,Java,Azure,Azure Functions,我很感激目前Azure函数中的Java支持是预览版,但我想知道该功能是否缺失或找不到 我试图解决的问题如下。创建一个HTTPTriger,它将接收一个日期参数,然后读取一个Blob存储,并将所有以该参数开头(以.qmsg结尾)的Blob的URI放入队列中进行进一步处理 C#示例代码使用ICollector显示以下模式 public static class ICollectorExample { [FunctionName("CopyQueueMessageICollector")]
public static class ICollectorExample
{
[FunctionName("CopyQueueMessageICollector")]
public static void Run(
[QueueTrigger("myqueue-items-source-3")] string myQueueItem,
[Queue("myqueue-items-destination")] ICollector<string> myDestinationQueue,
TraceWriter log)
{
log.Info($"C# function processed: {myQueueItem}");
myDestinationQueue.Add($"Copy 1: {myQueueItem}");
myDestinationQueue.Add($"Copy 2: {myQueueItem}");
}
}
公共静态类ICollector示例
{
[函数名(“CopyQueueMessageICollector”)]
公共静态无效运行(
[QueueTrigger(“myqueue-items-source-3”)]字符串myQueueItem,
[队列(“myqueue items destination”)]ICollector myDestinationQueue,
TraceWriter日志)
{
log.Info($“C#函数已处理:{myQueueItem}”);
添加($“复制1:{myQueueItem}”);
添加($“复制2:{myQueueItem}”);
}
}
Java ducument说要使用OutputBinding,但是这似乎只有一个.setValue()方法,如果使用OutputBinding,则队列中只会有一个项目
那么,我应该用什么来确保两者兼得呢
尼克(c)您只需要使用
列表
作为T值,而不是字符串
。请参阅下面的代码示例
public class QueueTriggerJava {
/**
* This function will be invoked when a new message is received at the specified path. The message contents are provided as input to this function.
*/
@FunctionName("QueueTriggerJava")
public void queueHandler(
@QueueTrigger(name = "message", queueName = "input-queue-items", connection = "AzureWebJobsStorage") String message,
@QueueOutput(name = "outMessages", queueName = "outout-queue-items", connection = "AzureWebJobsStorage") OutputBinding<List<String>> outMessages,
final ExecutionContext context
) {
List<String> allMessages = new LinkedList<String>();
allMessages.add(message);
allMessages.add(message);
outMessages.setValue(allMessages);
context.getLogger().info("Message count: " + outMessages.getValue().size());
}
}
公共类QueueTriggerJava{
/**
*当在指定路径接收到新消息时,将调用此函数。消息内容作为此函数的输入提供。
*/
@FunctionName(“QueueTriggerJava”)
公共无效队列处理程序(
@QueueTrigger(name=“message”,queueName=“input queue items”,connection=“azurewebjobstorage”)字符串消息,
@QueueOutput(name=“outMessages”,queueName=“outout队列项目”,connection=“AzureWebJobsStorage”)OutputBinding outMessages,
最终执行上下文
) {
List allMessages=new LinkedList();
添加(消息);
添加(消息);
outMessages.setValue(所有消息);
context.getLogger().info(“消息计数:+outMessages.getValue().size());
}
}
谢谢你,杰瑞。奇怪的是,我尝试了这个方法,但得到了一个错误,表示参数无法解析为字符串(或类似的字符串)。但最后那是因为我没有更新我的测试!!!