通过Java Azure函数应用

时间:2018-08-15 08:01:23

标签: java azure azure-functions

我很高兴知道Azure Functions中的Java支持目前处于预览状态,但是我想知道该功能是否丢失或找不到。

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

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

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

Java文件说要使用OutputBinding ,但是它似乎只有.setValue()方法,如果我使用OutputBinding ,则只有我的一个项目会出现在队列中。

那我该用什么来确保我俩都得到?

尼克(c)

1 个答案:

答案 0 :(得分:0)

您只需要使用List<String>作为T值而不是String。请参见以下代码示例。

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