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

使用Java Camel上传CSV到Azure Storage Blob无报错但上传失败如何解决?

问题原因及遗漏点

  • Camel上下文未保持运行状态:调用mycontext.start()后没有加阻塞逻辑,主进程会直接退出,异步执行的文件读取、上传逻辑根本来不及运行,所以不会有报错也不会生成文件。
  • 目标容器未提前创建:Camel Azure Storage Blob组件默认不会自动创建目标容器,需要提前在Azure存储账号中创建名为report的容器,否则上传会静默失败。
  • 路径配置不规范:Windows系统下的文件路径写法存在问题,c://folder2的格式可能导致Camel无法定位到目标文件,建议改为file:C:/folder2。
  • 日志级别配置不合理:当前无报错大概率是日志级别设置过高,隐藏了权限校验、资源不存在类的错误,建议将org.apache.camel、com.azure.storage包的日志级别调整为DEBUG排查潜在问题。
  • 依赖缺失:需要确认项目已完整引入camel-azure-storage-blob以及Azure Storage SDK的相关依赖,缺依赖也会导致逻辑不执行且无报错。

修正后参考代码

StorageSharedKeyCredential credential = new StorageSharedKeyCredential("test", "替换为实际的存储账号密钥");
String uri = "https://test.blob.core.windows.net";

BlobServiceClient client = new BlobServiceClientBuilder()
        .endpoint(uri)
        .credential(credential)
        .buildClient();
CamelContext mycontext = new DefaultCamelContext();
mycontext.getRegistry().bind("client", client);

mycontext.setStreamCaching(true);
mycontext.addRoutes(new RouteBuilder() {
    @Override
    public void configure() {
        // 修正路径写法
        from("file:C:/folder2?fileName=MY_TEST_FILE.csv&noop=true")
        .to("azure-storage-blob://test/report?blobName=MY_TEST_FILE.csv&operation=uploadBlockBlob&serviceClient=#client");
    }
});
mycontext.start();
// 新增阻塞逻辑等待路由执行完成,生产环境建议使用Camel Main类保持服务长期运行
Thread.sleep(10000);
mycontext.stop();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:15:03