使用 Java 的 Azure 函数 - 如何创建 @BlobTrigger
Azure functions using Java - How to created @BlobTrigger
我需要使用 Java 创建 Azure 函数 BlobTrigger 来监控我的存储容器中的新的和更新的 blob。
尝试使用以下代码
import java.util.*;
import com.microsoft.azure.serverless.functions.annotation.*;
import com.microsoft.azure.serverless.functions.*;
import java.nio.file.*;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import com.microsoft.azure.storage.*;
import com.microsoft.azure.storage.blob.*;
@FunctionName("testblobtrigger")
public String testblobtrigger(@BlobTrigger(name = "test", path = "testcontainer/{name}") String content) {
try {
return String.format("Blob content : %s!", content);
} catch (Exception e) {
// Output the stack trace.
e.printStackTrace();
return "Access Error!";
}
}
执行时显示错误
Storage binding (blob/queue/table) must have non-empty connection. Invalid storage binding found on method:
添加连接字符串后正常工作
public String kafkablobtrigger(@BlobTrigger(name = "test", path = "testjavablobstorage/{name}",connection=storageConnectionString) String content) {
为什么我在使用 blobtrigger 时需要添加连接字符串?
在 C# 中,它在没有连接字符串的情况下工作:
public static void ProcessBlobContainer1([BlobTrigger("container1/{blobName}")] CloudBlockBlob blob, string blobName)
{
ProcessBlob("container1", blobName, blob);
}
我没有看到任何 Java @BlobTrigger 的 Azure 函数示例。
毕竟connection
是触发器识别容器位置所必需的
经过测试,我发现@Mikhail 是对的。
对于 C#,如果 connection
被忽略,将使用默认值(在 local.settings.json 或门户中的应用程序设置中)。但不幸的是 java 没有相同的设置。
您可以在 @FuncionName
下方添加 @StorageAccount("YourStorageConnection")
,因为这是另一种有效的选择方式。 local.settings.json 或门户应用程序设置中 YourStorageConnection
的值由您决定。
您可以关注 this tutorial,使用 mvn azure-functions:add
找到 java 的四个(Http/Blob/Queue/TimerTrigger)模板。
我需要使用 Java 创建 Azure 函数 BlobTrigger 来监控我的存储容器中的新的和更新的 blob。
尝试使用以下代码
import java.util.*;
import com.microsoft.azure.serverless.functions.annotation.*;
import com.microsoft.azure.serverless.functions.*;
import java.nio.file.*;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import com.microsoft.azure.storage.*;
import com.microsoft.azure.storage.blob.*;
@FunctionName("testblobtrigger")
public String testblobtrigger(@BlobTrigger(name = "test", path = "testcontainer/{name}") String content) {
try {
return String.format("Blob content : %s!", content);
} catch (Exception e) {
// Output the stack trace.
e.printStackTrace();
return "Access Error!";
}
}
执行时显示错误
Storage binding (blob/queue/table) must have non-empty connection. Invalid storage binding found on method:
添加连接字符串后正常工作
public String kafkablobtrigger(@BlobTrigger(name = "test", path = "testjavablobstorage/{name}",connection=storageConnectionString) String content) {
为什么我在使用 blobtrigger 时需要添加连接字符串?
在 C# 中,它在没有连接字符串的情况下工作:
public static void ProcessBlobContainer1([BlobTrigger("container1/{blobName}")] CloudBlockBlob blob, string blobName)
{
ProcessBlob("container1", blobName, blob);
}
我没有看到任何 Java @BlobTrigger 的 Azure 函数示例。
毕竟connection
是触发器识别容器位置所必需的
经过测试,我发现@Mikhail 是对的。
对于 C#,如果 connection
被忽略,将使用默认值(在 local.settings.json 或门户中的应用程序设置中)。但不幸的是 java 没有相同的设置。
您可以在 @FuncionName
下方添加 @StorageAccount("YourStorageConnection")
,因为这是另一种有效的选择方式。 local.settings.json 或门户应用程序设置中 YourStorageConnection
的值由您决定。
您可以关注 this tutorial,使用 mvn azure-functions:add
找到 java 的四个(Http/Blob/Queue/TimerTrigger)模板。