通过java azure function app向存储队列添加多个条目

通过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")]

我很感激目前Azure函数中的Java支持是预览版,但我想知道该功能是否缺失或找不到

我试图解决的问题如下。创建一个HTTPTriger,它将接收一个日期参数,然后读取一个Blob存储,并将所有以该参数开头(以.qmsg结尾)的Blob的URI放入队列中进行进一步处理

C#示例代码使用ICollector显示以下模式

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());
}
}

谢谢你,杰瑞。奇怪的是,我尝试了这个方法,但得到了一个错误,表示参数无法解析为字符串(或类似的字符串)。但最后那是因为我没有更新我的测试!!!