我有一个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?
1条答案
按热度按时间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 -