代码之家  ›  专栏  ›  技术社区  ›  manam rajesh

Azure函数使用Java-如何创建@BlobTrigger

  •  1
  • manam rajesh  · 技术社区  · 6 年前

    我需要使用Java创建Azure函数BlobTrigger来监视我的存储容器中的新Blob和更新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!";
         }
     }
    

    执行时显示错误

    存储绑定(blob/队列/表)必须具有非空连接。在方法上找到无效的存储绑定:

    添加连接字符串时,它正在工作

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

    我没有看到任何针对@BlobTrigger的Azure函数的Java示例。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Jerry Liu Phantom    6 年前

    毕竟 connection 是触发器识别容器所在位置所必需的。

    经过测试,我发现@Mikhail是对的。 对于C#,将使用默认值(在local.settings.json或门户中的应用程序设置中),如果 联系 被忽略了。但不幸的是,java没有相同的设置。

    您可以添加 @StorageAccount("YourStorageConnection") 低于您的 @FuncionName 因为这是另一种有效的选择方式。和价值 YourStorageConnection 在本地。设置。json或门户中的应用程序设置由您决定。

    你可以跟随 this tutorial 使用 mvn azure-functions:add 查找java的四个(Http/Blob/Queue/TimerTrigger)模板。