Camel Azure Blob生成带有BlobContainerItem的消息

zwghvu4y  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(150)

我有一个camel路由来列出Azure blob存储中的所有blob。但是交换主体没有BlobItem的列表,而是BlobContainerItem的列表,这导致我的代码出现ClassCastException
ClassCastException: class com.azure.storage.blob.models.BlobContainerItem cannot be cast to class com.azure.storage.blob.models.BlobItem

from("timer://listAllBlobs?fixedRate=true&period=1s")
.to("azure-storage-blob://devstoreaccount1/hotfolder&serviceClient=#blobServiceClient&operation=listBlobs")
.tracing()
.process(exchange -> {
    ArrayList<BlobItem> items = exchange.getIn().getBody(ArrayList.class);
    for (BlobItem blobItem : items) {
        System.out.println(blobItem.getName());
    }
});

ArrayList<BlobContainerItem> items = exchange.getIn().getBody(ArrayList.class);
  for (BlobContainerItem blobItem : items) {
    System.out.println(blobItem.getName());
  }

我得到了输出的hotfolder。但那不是里面的文件,而是容器本身。
如何正确地迭代blob?

6qftjkof

6qftjkof1#

问题是URL格式不正确(?&)。
GET /devstoreaccount1?comp=list HTTP/1.1" 200 -
正确的网址是azure-storage-blob://devstoreaccount1/hotfolder?serviceClient=#blobServiceClient&operation=listBlobs
GET /devstoreaccount1/hotfolder?restype=container&comp=list HTTP/1.1" 200 -

相关问题