8.5. 사용법


예를 들어 camelazure 스토리지 계정의 container1 에 있는 블록 Blob hello.txt 에서 Blob 콘텐츠를 다운로드하려면 다음 스니펫을 사용합니다.

from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accessKey=yourAccessKey").
to("file://blobdirectory");
Copy to Clipboard Toggle word wrap

8.5.1. 구성 요소 프로듀서에서 평가한 메시지 헤더

Expand
header변수 이름유형작업설명

CamelAzureStorageBlobTimeout

BlobConstants.TIMEOUT

기간

All

{@link RuntimeException}을 초과하는 선택적 타임아웃 값입니다.

CamelAzureStorageBlobMetadata

BlobConstants.METADATA

Map<String,String>

컨테이너 및 Blob과 관련된 작업

컨테이너 또는 Blob과 연결할 메타데이터입니다.

CamelAzureStorageBlobPublicAccessType

BlobConstants.PUBLIC_ACCESS_TYPE

PublicAccessType

createContainer

이 컨테이너의 데이터를 공개적으로 사용할 수 있는 방법을 지정합니다. 공용 액세스 권한 없음에 대해 null 을 전달합니다.

CamelAzureStorageBlobRequestCondition

BlobConstants.BLOB_REQUEST_CONDITION

BlobRequestConditions

컨테이너 및 Blob과 관련된 작업

여기에는 다양한 요청의 성공적인 작업이 있는 조건에 대한 성공적인 작업을 제한하는 값이 포함됩니다. 이러한 조건은 전적으로 선택 사항입니다.

CamelAzureStorageBlobListDetails

BlobConstants.BLOB_LIST_DETAILS

BlobListDetails

listBlobs

특정 Blob 나열에 대한 세부 정보

CamelAzureStorageBlobPrefix

BlobConstants.PREFIX

문자열

listBlobs,getBlob

결과를 필터링하여 이름이 지정된 접두사로 시작하는 Blob만 반환합니다. 모든 Blob을 반환하려면 null일 수 있습니다.

CamelAzureStorageBlobMaxResultsPerPage

BlobConstants.MAX_RESULTS_PER_PAGE

정수

listBlobs

모든 BlobPrefix 요소를 포함하여 반환할 Blob의 최대 수를 지정합니다. 요청이 maxResultsPerPage를 지정하지 않거나 5,000보다 큰 값을 지정하는 경우 서버는 최대 5,000개의 항목을 반환합니다.

CamelAzureStorageBlobListBlobOptions

BlobConstants.LIST_BLOB_OPTIONS

ListBlobsOptions

listBlobs

{@link BlobContainerClient} 개체에서 listBlobsFlatSegment에 대한 호출 동작을 구성하는 데 사용할 수 있는 옵션을 정의합니다.

CamelAzureStorageBlobHttpHeaders

BlobConstants.BLOB_HTTP_HEADERS

BlobHttpHeaders

uploadBlockBlob, commitBlobBlockList, createAppendBlob, createPageBlob

작업 집합에 대한 추가 매개변수입니다.

CamelAzureStorageBlobAccessTier

BlobConstants.ACCESS_TIER

AccessTier

uploadBlockBlob, commitBlobBlockList

AccessTier에 대한 값을 정의합니다.

CamelAzureStorageBlobContentMD5

BlobConstants.CONTENT_MD5

byte[]

업로드 Blob과 관련된 대부분의 작업

블록 콘텐츠의 MD5 해시입니다. 이 해시는 전송 중에 블록의 무결성을 확인하는 데 사용됩니다. 이 헤더를 지정하면 스토리지 서비스에서 이 헤더 값과 도달한 콘텐츠의 해시를 비교합니다. 이 MD5 해시는 Blob으로 저장되지 않습니다. 두 해시가 일치하지 않으면 작업이 실패합니다.

CamelAzureStorageBlobPageBlobRange

BlobConstants.PAGE_BLOB_RANGE

PageRange

페이지 Blob과 관련된 작업

{@link PageRange} 오브젝트입니다. 페이지가 512바이트 경계로 정렬되어야 하는 경우 시작 오프셋은 512의 모듈러스여야 하며 종료 오프셋은 512 - 1의 모듈러스여야 합니다. 유효한 바이트 범위의 예는 0-511, 512-1023 등입니다.

CamelAzureStorageBlobCommitBlobBlockListLater

BlobConstants.COMMIT_BLOCK_LIST_LATER

boolean

stageBlockBlobList

true 로 설정되면 staged 블록이 직접 커밋되지 않습니다.

CamelAzureStorageBlobCreateAppendBlob

BlobConstants.CREATE_APPEND_BLOB

boolean

commitAppendBlob

true 로 설정되면 추가 블록을 커밋할 때 추가 블록이 생성됩니다.

CamelAzureStorageBlobCreatePageBlob

BlobConstants.CREATE_PAGE_BLOB

boolean

uploadPageBlob

true 로 설정되면 페이지 Blob을 업로드할 때 페이지가 생성됩니다.

CamelAzureStorageBlobBlockListType

BlobConstants.BLOCK_LIST_TYPE

BlockListType

getBlobBlockList

반환할 블록 유형을 지정합니다.

CamelAzureStorageBlobPageBlobSize

BlobConstants.PAGE_BLOB_SIZE

long

createPageBlob, resizePageBlob

최대 8TB 페이지 Blob의 최대 크기를 지정합니다. 페이지 Blob 크기는 512바이트 경계에 맞게 조정되어야 합니다.

CamelAzureStorageBlobSequenceNumber

BlobConstants.BLOB_SEQUENCE_NUMBER

long

createPageBlob

요청을 추적하는 데 사용할 수 있는 사용자 제어 값입니다. 시퀀스 번호의 값은 0에서 2^63 - 1. 기본값은 0입니다.

CamelAzureStorageBlobDeleteSnapshotsOptionType

BlobConstants.DELETE_SNAPSHOT_OPTION_TYPE

DeleteSnapshotsOptionType

deleteBlob

이 Blob에서 스냅샷을 삭제하는 동작을 지정합니다. \{@code Include}는 기본 Blob 및 모든 스냅샷을 삭제합니다. \{@code Only}는 스냅샷만 삭제합니다. 스냅샷이 삭제되는 경우 null을 전달해야 합니다.

CamelAzureStorageBlobListBlobContainersOptions

BlobConstants.LIST_BLOB_CONTAINERS_OPTIONS

ListBlobContainersOptions

listBlobContainers

서비스에서 반환해야 하는 데이터를 지정하는 {@link ListBlobContainersOptions}입니다.

CamelAzureStorageBlobParallelTransferOptions

BlobConstants.PARALLEL_TRANSFER_OPTIONS

ParallelTransferOptions

downloadBlobToFile

파일 다운로드에 사용할 {@link ParallelTransferOptions}. 병렬 전송 매개변수 수가 무시됩니다.

CamelAzureStorageBlobFileDir

BlobConstants.FILE_DIR

문자열

downloadBlobToFile

다운로드한 Blob이 저장되는 파일 디렉터리입니다.

CamelAzureStorageBlobDownloadLinkExpiration

BlobConstants.DOWNLOAD_LINK_EXPIRATION

long

downloadLink

URL 다운로드 링크의 기본 만료(millis)를 재정의합니다.

CamelAzureStorageBlobBlobName

BlobConstants.BLOB_NAME

문자열

Blob 관련 작업

교환 헤더에서 Blob 이름을 재정의/설정합니다.

CamelAzureStorageBlobContainerName

BlobConstants.BLOB_CONTAINER_NAME

문자열

컨테이너 및 Blob과 관련된 작업

교환 헤더에서 컨테이너 이름을 재정의/설정합니다.

CamelAzureStorageBlobOperation

BlobConstants.BLOB_OPERATION

BlobOperationsDefinition

All

실행할 생산자 작업을 지정합니다. 생산자 작업과 관련된 이 페이지의 문서를 참조하십시오.

CamelAzureStorageBlobRegex

BlobConstants.REGEX

문자열

listBlobs,getBlob

결과를 필터링하여 이름이 지정된 정규식과 일치하는 Blob만 반환합니다. 모두 반환하려면 null일 수 있습니다. 접두사와 regex가 모두 설정된 경우 regex는 우선 순위를 사용하고 접두사는 무시됩니다.

CamelAzureStorageBlobChangeFeedStartTime

BlobConstants.CHANGE_FEED_START_TIME

OffsetDateTime

getChangeFeed

시작 시간 후에 대략 이벤트를 반환하도록 결과를 필터링합니다. 참고: 이전 시간에 속한 몇 개의 이벤트도 반환할 수 있습니다. 이 시간에 속하는 몇 가지 이벤트가 누락될 수 있습니다. 한 시간 동안의 모든 이벤트를 반환하려면 시작 시간을 1시간으로 반올림합니다.

CamelAzureStorageBlobChangeFeedEndTime

BlobConstants.CHANGE_FEED_END_TIME

OffsetDateTime

getChangeFeed

결과를 필터링하여 종료 시간 이전에 약 이벤트를 반환합니다. 참고: 다음 시간에 속하는 몇 개의 이벤트도 반환할 수 있습니다. 이 시간에 속하는 몇 가지 이벤트가 누락될 수 있습니다. 한 시간 동안의 모든 이벤트를 반환하려면 종료 시간을 1시간으로 반올림합니다.

CamelAzureStorageBlobChangeFeedContext

BlobConstants.CHANGE_FEED_CONTEXT

context

getChangeFeed

이를 통해 서비스 호출 중에 10.0.0.1 파이프라인을 통과하는 추가 컨텍스트가 제공됩니다.

CamelAzureStorageBlobSourceBlobAccountName

BlobConstants.SOURCE_BLOB_ACCOUNT_NAME

문자열

copyBlob

복사 Blob 작업에서 소스 계정 이름으로 사용할 소스 Blob 계정 이름입니다.

CamelAzureStorageBlobSourceBlobContainerName

BlobConstants.SOURCE_BLOB_CONTAINER_NAME

문자열

copyBlob

복사 Blob 작업에서 소스 컨테이너 이름으로 사용할 소스 Blob 컨테이너 이름입니다.

8.5.2. 구성 요소 프로듀서 또는 소비자가 설정한 메시지 헤더

Expand
header변수 이름유형설명

CamelAzureStorageBlobAccessTier

BlobConstants.ACCESS_TIER

AccessTier

Blob의 액세스 계층입니다.

CamelAzureStorageBlobAccessTierChangeTime

BlobConstants.ACCESS_TIER_CHANGE_TIME

OffsetDateTime

Chrony: Blob의 액세스 계층이 마지막으로 변경된 경우입니다.

CamelAzureStorageBlobArchiveStatus

BlobConstants.ARCHIVE_STATUS

ArchiveStatus

Blob의 아카이브 상태.

CamelAzureStorageBlobCreationTime

BlobConstants.CREATION_TIME

OffsetDateTime

Blob의 생성 시간입니다.

CamelAzureStorageBlobSequenceNumber

BlobConstants.BLOB_SEQUENCE_NUMBER

long

페이지 Blob의 현재 시퀀스 번호입니다.

CamelAzureStorageBlobBlobSize

BlobConstants.BLOB_SIZE

long

Blob의 크기입니다.

CamelAzureStorageBlobBlobType

BlobConstants.BLOB_TYPE

BlobType

Blob의 유형입니다.

CamelAzureStorageBlobCacheControl

BlobConstants.CACHE_CONTROL

문자열

Blob에 지정된 캐시 컨트롤입니다.

CamelAzureStorageBlobCommittedBlockCount

BlobConstants.COMMITTED_BLOCK_COUNT

정수

추가 Blob에 커밋된 블록 수

CamelAzureStorageBlobContentDisposition

BlobConstants.CONTENT_DISPOSITION

문자열

Blob에 지정된 콘텐츠 배치입니다.

CamelAzureStorageBlobContentEncoding

BlobConstants.CONTENT_ENCODING

문자열

Blob에 지정된 콘텐츠 인코딩입니다.

CamelAzureStorageBlobContentLanguage

BlobConstants.CONTENT_LANGUAGE

문자열

Blob에 지정된 콘텐츠 언어입니다.

CamelAzureStorageBlobContentMd5

BlobConstants.CONTENT_MD5

byte[]

Blob에 지정된 콘텐츠 MD5입니다.

CamelAzureStorageBlobContentType

BlobConstants.CONTENT_TYPE

문자열

Blob에 지정된 콘텐츠 유형입니다.

CamelAzureStorageBlobCopyCompletionTime

BlobConstants.COPY_COMPILATION_TIME

OffsetDateTime

Blob의 마지막 복사 작업이 완료된 date입니다.

CamelAzureStorageBlobCopyDestinationSnapshot

BlobConstants.COPY_DESTINATION_SNAPSHOT

문자열

Blob에 대한 마지막 증분 복사 스냅샷의 스냅샷 식별자입니다.

CamelAzureStorageBlobCopyId

BlobConstants.COPY_ID

문자열

Blob에서 수행되는 마지막 복사 작업의 식별자입니다.

CamelAzureStorageBlobCopyProgress

BlobConstants.COPY_PROGRESS

문자열

Blob에서 수행된 마지막 복사 작업의 진행률입니다.

CamelAzureStorageBlobCopySource

BlobConstants.COPY_SOURCE

문자열

Blob에서 수행된 마지막 복사 작업의 소스입니다.

CamelAzureStorageBlobCopyStatus

BlobConstants.COPY_STATUS

CopyStatusType

Blob에서 수행되는 마지막 복사 작업의 상태.

CamelAzureStorageBlobCopyStatusDescription

BlobConstants.COPY_STATUS_DESCRIPTION

문자열

Blob의 마지막 복사 작업에 대한 설명입니다.

CamelAzureStorageBlobETag

BlobConstants.E_TAG

문자열

Blob의 E 태그

CamelAzureStorageBlobIsAccessTierInferred

BlobConstants.IS_ACCESS_TIER_INFRRRED

boolean

Blob의 액세스 계층이 Blob의 속성에서 유추되었는지를 나타내는 플래그입니다.

CamelAzureStorageBlobIsIncrementalCopy

BlobConstants.IS_INCREMENTAL_COPY

boolean

Blob이 증분적으로 복사되었는지 여부를 나타내는 플래그입니다.

CamelAzureStorageBlobIsServerEncrypted

BlobConstants.IS_SERVER_ENCRYPTED

boolean

서버에서 Blob의 콘텐츠가 암호화되었는지 여부를 나타내는 플래그입니다.

CamelAzureStorageBlobLastModified

BlobConstants.LAST_MODIFIED

OffsetDateTime

<!- Blob이 마지막으로 수정된 경우입니다.

CamelAzureStorageBlobLeaseDuration

BlobConstants.LEASE_DURATION

LeaseDurationType

Blob에 대한 임대 유형입니다.

CamelAzureStorageBlobLeaseState

BlobConstants.LEASE_STATE

LeaseStateType

리스가 Blob에 대한 상태입니다.

CamelAzureStorageBlobLeaseStatus

BlobConstants.LEASE_STATUS

LeaseStatusType

Blob에 리스 상태.

CamelAzureStorageBlobMetadata

BlobConstants.METADATA

Map<String, String>

Blob과 관련된 추가 메타데이터입니다.

CamelAzureStorageBlobAppendOffset

BlobConstants.APPEND_OFFSET

문자열

블록이 블록 Blob에 커밋된 오프셋입니다.

CamelAzureStorageBlobFileName

BlobConstants.FILE_NAME

문자열

작업 downloadBlobToFile 에서 다운로드한 파일 이름

CamelAzureStorageBlobDownloadLink

BlobConstants.DOWNLOAD_LINK

문자열

downloadLink 작업을 통해 생성된 다운로드 링크입니다.

CamelAzureStorageBlobRawHttpHeaders

BlobConstants.RAW_HTTP_HEADERS

HttpHeaders

사용자가 사용할 수 있는 구문이 아닌 httpHeaders를 반환합니다.

8.5.3. 고급 Azure Storage Blob 구성

Camel 애플리케이션이 방화벽 뒤에서 실행 중이거나 BlobServiceClient 인스턴스 구성을 더 많이 제어해야 하는 경우 자체 인스턴스를 생성할 수 있습니다.

StorageSharedKeyCredential credential = new StorageSharedKeyCredential("yourAccountName", "yourAccessKey");
String uri = String.format("https://%s.blob.core.windows.net", "yourAccountName");

BlobServiceClient client = new BlobServiceClientBuilder()
                          .endpoint(uri)
                          .credential(credential)
                          .buildClient();
// This is camel context
context.getRegistry().bind("client", client);
Copy to Clipboard Toggle word wrap

그런 다음 Camel azure-storage-blob 구성 요소 구성에서 이 인스턴스를 참조합니다.

from("azure-storage-blob://cameldev/container1?blobName=myblob&serviceClient=#client")
.to("mock:result");
Copy to Clipboard Toggle word wrap

8.5.4. 레지스트리에서 BlobServiceClient 클라이언트 자동 검색

구성 요소는 BlobServiceClient console이 레지스트리에 있는지 감지할 수 있습니다. 해당 유형의 유일한 인스턴스인 경우 이 인스턴스가 클라이언트로 사용되며 위의 예제와 같이 uri 매개변수로 정의할 필요가 없습니다. 이 기능은 끝점을 더 스마트하게 구성하는 데 매우 유용할 수 있습니다.

8.5.5. Azure Storage Blob Producer 작업

Camel Azure Storage Blob 구성 요소는 생산자 측에서 다양한 작업을 제공합니다.

서비스 수준에서의 작업

이러한 작업의 경우 accountName필요합니다.

Expand
작업설명

listBlobContainers

Blob의 콘텐츠를 가져옵니다. 이 작업의 출력을 Blob 범위로 제한할 수 있습니다.

getChangeFeed

Blobs 및 스토리지 계정의 Blob 메타데이터에 발생하는 모든 변경 사항의 트랜잭션 로그를 반환합니다. 변경 피드는 이러한 변경에 대한 순서, 보장, 지속성, 변경 불가능, 읽기 전용 로그를 제공합니다.

컨테이너 수준에서의 작업

이러한 작업의 경우 accountNamecontainerName필요합니다.

Expand
작업설명

createBlobContainer

스토리지 계정 내에 새 컨테이너를 생성합니다. 동일한 이름의 컨테이너가 이미 있는 경우 생산자는 이를 무시합니다.

deleteBlobContainer

스토리지 계정에서 지정된 컨테이너를 삭제합니다. 컨테이너가 없으면 작업이 실패합니다.

listBlobs

이 컨테이너의 Blob 목록을 반환하고 폴더 구조가 평면화됩니다.

Blob 수준의 작업

이러한 작업의 경우 accountName,containerNameblobName필요합니다.

Expand
작업Blob 유형설명

getBlob

Common

Blob의 콘텐츠를 가져옵니다. 이 작업의 출력을 Blob 범위로 제한할 수 있습니다.

deleteBlob

Common

Blob을 삭제합니다.

downloadBlobToFile

Common

전체 Blob을 경로로 지정된 파일로 다운로드합니다. 파일이 생성되고 파일이 이미 존재하는 경우 {@link FileAlreadyExistsException}가 발생합니다.

downloadLink

Common

SAS(공유 액세스 서명)를 사용하여 지정된 Blob에 대한 다운로드 링크를 생성합니다. 기본적으로는 허용된 액세스 권한의 1시간으로만 제한됩니다. 그러나 헤더를 통해 기본 만료 기간을 재정의할 수 있습니다.

uploadBlockBlob

BlockBlob

새 블록 Blob을 만들거나 기존 블록 Blob의 내용을 업데이트합니다. 기존 블록 Blob을 업데이트하면 Blob의 기존 메타데이터가 덮어씁니다. PutBlob에서는 부분적인 업데이트가 지원되지 않습니다. 기존 Blob의 내용은 새 콘텐츠로 덮어씁니다.

stageBlockBlobList

BlockBlob

지정된 블록을 commitBlobBlockList 호출에 의해 나중에 커밋하기 위해 블록 Blob의 "staging 영역"에 업로드합니다. 그러나 CamelAzureStorageBlobCommitBlobBlockListLater 또는 config commitBlockListLater 가 false로 설정된 경우 블록을 준비한 직후 블록을 커밋합니다.

commitBlobBlockList

BlockBlob

Blob을 구성할 블록 ID 목록을 지정하여 Blob을 씁니다.Writes a blob by specifying the list of block IDs that are to make up the blob. Blob의 일부로 작성되려면 이전 stageBlockBlobList 작업에서 블록이 서버에 성공적으로 기록되어야 합니다. 변경된 블록만 업로드한 다음 새 블록과 기존 블록을 함께 커밋하여 commitBlobBlockList 를 호출하여 Blob을 업데이트할 수 있습니다. 블록 목록에 지정되지 않은 모든 블록이 영구적으로 삭제되었습니다.

getBlobBlockList

BlockBlob

지정된 블록 목록 필터를 사용하여 블록 Blob의 일부로 업로드된 블록 목록을 반환합니다.

createAppendBlob

AppendBlob

0 길이 추가 Blob을 만듭니다. commitAppendBlo'b 작업을 호출하여 데이터를 추가 Blob에 추가합니다.

commitAppendBlob

AppendBlob

새 데이터 블록을 기존 추가 Blob의 끝에 커밋합니다. header CamelAzureStorageBlobCreateAppendBlob 또는 config createAppendBlob 가 true로 설정된 경우 커밋하기 전에 createAppendBlob 작업을 내부 호출을 통해 appendBlob를 생성합니다.

createPageBlob

PageBlob

지정된 길이의 페이지 Blob을 만듭니다. uploadPageBlob 작업을 호출하여 데이터 데이터를 페이지 Blob에 업로드합니다.

uploadPageBlob

PageBlob

페이지 Blob에 하나 이상의 페이지를 씁니다.Writes one or more pages to the page blob. 쓰기 크기는 512의 여러 개여야 합니다. header CamelAzureStorageBlobCreatePageBlob 또는 config createPageBlob 가 true로 설정된 경우 업로드하기 전에 먼저 createPageBlob 작업을 내부 호출을 통해 appendBlob를 생성하려고 합니다.

resizePageBlob

PageBlob

페이지 Blob의 크기를 지정된 크기(512개 이상이어야 함)로 조정합니다.

clearPageBlob

PageBlob

페이지 Blob에서 지정된 페이지를 해제합니다. 범위의 크기는 512의 여러 개여야 합니다.

getPageBlobRanges

PageBlob

페이지 Blob 또는 페이지 Blob의 스냅샷에 대한 유효한 페이지 범위 목록을 반환합니다.

copyBlob

common

다른 계정에서도 한 컨테이너에서 다른 컨테이너로 Blob을 복사합니다.

이러한 작업을 camel 애플리케이션에 사용하는 방법을 알아보려면 이 페이지의 예제 섹션을 참조하십시오.

8.5.6. 소비자 예

파일 구성 요소를 사용하여 Blob을 파일로 사용하려면 다음과 같이 수행할 수 있습니다.

from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey").
to("file://blobdirectory");
Copy to Clipboard Toggle word wrap

그러나 파일 구성 요소를 사용하지 않고 직접 파일에 쓸 수도 있습니다. Blob을 저장하려면 fileDir 폴더 경로를 지정해야 합니다.

from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
Copy to Clipboard Toggle word wrap

또한 이 구성 요소는 일괄 소비자를 지원하므로 컨테이너 이름만 지정하여 여러 Blob을 사용할 수 있으므로 사용자는 컨테이너의 Blob 수에 따라 여러 트랜잭션을 반환합니다.

예제

from("azure-storage-blob://camelazure/container1?accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
Copy to Clipboard Toggle word wrap

8.5.7. 생산자 작업 예

  • listBlobContainers
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.LIST_BLOB_CONTAINERS_OPTIONS, new ListBlobContainersOptions().setMaxResultsPerPage(10));
  })
  .to("azure-storage-blob://camelazure?operation=listBlobContainers&client&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • createBlobContainer
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, "newContainerName");
  })
  .to("azure-storage-blob://camelazure/container1?operation=createBlobContainer&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • deleteBlobContainer:
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, "overridenName");
  })
  .to("azure-storage-blob://camelazure/container1?operation=deleteBlobContainer&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • listBlobs:
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, "overridenName");
  })
  .to("azure-storage-blob://camelazure/container1?operation=listBlobs&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • getBlob:

교환 본문에서 outputStream 을 설정하고 데이터를 쓸 수 있습니다. 예:

from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, "overridenName");

    // set our body
    exchange.getIn().setBody(outputStream);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

본문을 설정하지 않으면 이 작업은 추가 다운스트림을 진행할 수 있는 InputStream 인스턴스를 제공합니다.

from("direct:start")
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlob&serviceClient=#client")
  .process(exchange -> {
      InputStream inputStream = exchange.getMessage().getBody(InputStream.class);
      // We use Apache common IO for simplicity, but you are free to do whatever dealing
      // with inputStream
      System.out.println(IOUtils.toString(inputStream, StandardCharsets.UTF_8.name()));
  })
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • deleteBlob:
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "overridenName");
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=deleteBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • downloadBlobToFile:
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "overridenName");
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=downloadBlobToFile&fileDir=/var/mydir&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • downloadLink
from("direct:start")
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=downloadLink&serviceClient=#client")
  .process(exchange -> {
      String link = exchange.getMessage().getHeader(BlobConstants.DOWNLOAD_LINK, String.class);
      System.out.println("My link " + link);
  })
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • uploadBlockBlob
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "overridenName");
    exchange.getIn().setBody("Block Blob");
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=uploadBlockBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • stageBlockBlobList
from("direct:start")
  .process(exchange -> {
      final List<BlobBlock> blocks = new LinkedList<>();
      blocks.add(BlobBlock.createBlobBlock(new ByteArrayInputStream("Hello".getBytes())));
      blocks.add(BlobBlock.createBlobBlock(new ByteArrayInputStream("From".getBytes())));
      blocks.add(BlobBlock.createBlobBlock(new ByteArrayInputStream("Camel".getBytes())));

      exchange.getIn().setBody(blocks);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=stageBlockBlobList&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • commitBlockBlobList
from("direct:start")
  .process(exchange -> {
      // We assume here you have the knowledge of these blocks you want to commit
      final List<Block> blocksIds = new LinkedList<>();
      blocksIds.add(new Block().setName("id-1"));
      blocksIds.add(new Block().setName("id-2"));
      blocksIds.add(new Block().setName("id-3"));

      exchange.getIn().setBody(blocksIds);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=commitBlockBlobList&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • getBlobBlockList
from("direct:start")
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlobBlockList&serviceClient=#client")
  .log("${body}")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • createAppendBlob
from("direct:start")
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createAppendBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • commitAppendBlob
from("direct:start")
  .process(exchange -> {
    final String data = "Hello world from my awesome tests!";
    final InputStream dataStream = new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8));

    exchange.getIn().setBody(dataStream);

    // of course you can set whatever headers you like, refer to the headers section to learn more
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=commitAppendBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • createPageBlob
from("direct:start")
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createPageBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • uploadPageBlob
from("direct:start")
  .process(exchange -> {
    byte[] dataBytes = new byte[512]; // we set range for the page from 0-511
    new Random().nextBytes(dataBytes);
    final InputStream dataStream = new ByteArrayInputStream(dataBytes);
    final PageRange pageRange = new PageRange().setStart(0).setEnd(511);

    exchange.getIn().setHeader(BlobConstants.PAGE_BLOB_RANGE, pageRange);
    exchange.getIn().setBody(dataStream);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=uploadPageBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • resizePageBlob
from("direct:start")
  .process(exchange -> {
    final PageRange pageRange = new PageRange().setStart(0).setEnd(511);

    exchange.getIn().setHeader(BlobConstants.PAGE_BLOB_RANGE, pageRange);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=resizePageBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • clearPageBlob
from("direct:start")
  .process(exchange -> {
    final PageRange pageRange = new PageRange().setStart(0).setEnd(511);

    exchange.getIn().setHeader(BlobConstants.PAGE_BLOB_RANGE, pageRange);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=clearPageBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • getPageBlobRanges
from("direct:start")
  .process(exchange -> {
    final PageRange pageRange = new PageRange().setStart(0).setEnd(511);

    exchange.getIn().setHeader(BlobConstants.PAGE_BLOB_RANGE, pageRange);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getPageBlobRanges&serviceClient=#client")
  .log("${body}")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • copyBlob
from("direct:copyBlob")
  .process(exchange -> {
    exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "file.txt");
    exchange.getMessage().setHeader(BlobConstants.SOURCE_BLOB_CONTAINER_NAME, "containerblob1");
    exchange.getMessage().setHeader(BlobConstants.SOURCE_BLOB_ACCOUNT_NAME, "account");
  })
  .to("azure-storage-blob://account/containerblob2?operation=copyBlob&sourceBlobAccessKey=RAW(accessKey)")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

이렇게 하면 계정 'account'의 컨테이너 containerblob1에 있는 file.txt가 동일한 계정의 컨테이너 containerblob2에 복사됩니다.

8.5.8. 개발 노트(Important)

모든 통합 테스트에서는 Testcontainers 를 사용하고 기본적으로 실행됩니다. Azure 서비스를 사용하여 모든 통합 테스트를 실행하려면 Azure accessKey 및 accountName이 필요합니다. Azure 클라이언트가 마이너 버전 업그레이드에서도 문제를 해결할 수 있으므로 모든 변경 사항을 사용하여 통합 테스트를 실행해야 합니다.In addition to the mocked unit tests you will need to run the integration tests with every change you make or even client upgrade as the Azure client can break things even on minor versions upgrade. 통합 테스트를 실행하려면 이 구성 요소 디렉터리에서 다음 maven 명령을 실행합니다.

mvn verify -PfullTests -DaccountName=myacc -DaccessKey=mykey
Copy to Clipboard Toggle word wrap

accountName 은 Azure 계정 이름이고 accessKey 는 Azure Portal에서 생성되는 액세스 키입니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat