You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java创建Azure Functions的BlobTrigger监控存储容器Blob

Java实现Azure Functions BlobTrigger监控Blob新增与更新

我帮你补全并整理了完整的BlobTrigger函数代码,用来监控Azure存储容器里的Blob新增和更新操作,代码里加了关键注释,方便你理解和修改:

import java.util.*;
import com.microsoft.azure.serverless.functions.annotation.*;
import com.microsoft.azure.serverless.functions.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class BlobMonitorFunction {

    // 定义日期格式化器,用于记录处理时间
    private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    /**
     * BlobTrigger函数:监控指定存储容器中的Blob新增与更新
     * @param blobInput 触发函数的Blob内容(这里用byte[]接收,也可以根据需求用InputStream等)
     * @param blobName 触发的Blob名称
     * @param context 函数执行上下文,用于日志输出
     */
    @FunctionName("BlobMonitor")
    public void run(
            @BlobTrigger(
                name = "blobInput",
                dataType = "binary",
                path = "your-container-name/{name}", // 替换成你要监控的容器名称
                connection = "AzureWebJobsStorage" // 对应local.settings.json里的存储连接字符串配置项
            ) byte[] blobInput,
            @BindingName("name") String blobName,
            final ExecutionContext context
    ) {
        // 获取当前时间
        String currentTime = LocalDateTime.now().format(DATE_FORMATTER);
        
        // 记录触发日志
        context.getLogger().info(String.format("[%s] 检测到Blob变化:%s", currentTime, blobName));
        
        // 这里可以添加你的业务逻辑:比如解析Blob内容、同步数据到其他系统等
        // 示例:输出Blob的大小
        context.getLogger().info(String.format("Blob大小:%d 字节", blobInput.length));
        
        // 如果需要处理Blob的元数据或者更复杂的操作,可以引入Azure Storage SDK进行扩展
    }
}

关键细节说明

  • @BlobTrigger注解:这是Azure Functions的核心触发器,path参数指定要监控的容器和Blob路径模式(支持通配符),connection参数对应配置文件里的存储连接字符串键名。
  • 输入参数:blobInput接收Blob的二进制内容,你可以根据需求换成InputStream或者String(如果是文本Blob);blobName通过@BindingName获取触发的Blob文件名。
  • 日志输出:借助ExecutionContext的日志器可以输出关键信息,方便在Azure门户或者本地调试时查看运行状态。

必备依赖(pom.xml)

确保你的Maven项目里引入了Azure Functions的核心依赖:

<dependencies>
    <dependency>
        <groupId>com.microsoft.azure.functions</groupId>
        <artifactId>azure-functions-java-library</artifactId>
        <version>3.0.0</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>azure-functions-maven-plugin</artifactId>
            <version>1.22.0</version>
            <configuration>
                <appName>your-function-app-name</appName>
                <resourceGroup>your-resource-group</resourceGroup>
                <region>your-region</region>
                <appSettings>
                    <property>
                        <name>AzureWebJobsStorage</name>
                        <value>your-storage-connection-string</value>
                    </property>
                </appSettings>
            </configuration>
            <executions>
                <execution>
                    <id>package-functions</id>
                    <goals>
                        <goal>package</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

注意事项

  • 本地调试时,需要在local.settings.json里配置AzureWebJobsStorage为你的存储账户连接字符串。
  • BlobTrigger默认会捕获Blob的新增操作,同时当Blob内容更新(ETag变化)时也会触发函数。
  • 如果需要处理大量Blob或者有特殊的过滤需求,可以调整path参数的通配符规则(比如只监控特定后缀的Blob:your-container-name/{name}.json)。

内容的提问来源于stack exchange,提问作者manam rajesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:26:01