62.3. unmarshal
이 예제에서는 MY_QUEUE라는 ActiveMQ 큐에서 Zip 파일 페이로드를 원래 형식으로 변환 해제하고 이를 UnZippedMessageProcessor
로 전달합니다.
from("activemq:queue:MY_QUEUE") .unmarshal().zipFile() .process(new UnZippedMessageProcessor());
from("activemq:queue:MY_QUEUE")
.unmarshal().zipFile()
.process(new UnZippedMessageProcessor());
zip 파일에 하나 이상의 항목이 있는 경우 ZipFileDataFormat의 usingIterator 옵션이 true로, splitter를 사용하여 추가 작업을 수행할 수 있습니다.If the zip file has more then one entry, the usingIterator option of ZipFileDataFormat to be true, and you can use splitter to do the further work.
또는 ZipSplitter를 다음과 같이 직접 분할하는 표현식으로 사용할 수 있습니다.
from("file:src/test/resources/org/apache/camel/dataformat/zipfile?delay=1000&noop=true") .split(new ZipSplitter()).streaming() .process(new UnZippedMessageProcessor()) .end();
from("file:src/test/resources/org/apache/camel/dataformat/zipfile?delay=1000&noop=true")
.split(new ZipSplitter()).streaming()
.process(new UnZippedMessageProcessor())
.end();
62.3.1. 집계 링크 복사링크가 클립보드에 복사되었습니다!
이 집계 전략을 사용하려면 빠른 완료 검사가 필요합니다.
이 예제에서는 입력 디렉토리에 있는 모든 텍스트 파일을 출력 디렉터리에 저장된 단일 Zip 파일로 집계합니다.
from("file:input/directory?antInclude=*/.txt") .aggregate(constant(true), new ZipAggregationStrategy()) .completionFromBatchConsumer().eagerCheckCompletion() .to("file:output/directory");
from("file:input/directory?antInclude=*/.txt")
.aggregate(constant(true), new ZipAggregationStrategy())
.completionFromBatchConsumer().eagerCheckCompletion()
.to("file:output/directory");
발신되는 CamelFileName
메시지 헤더는 java.io.File.createTempFile 접미사와 함께 java.io.File.createTempFile을 사용하여 생성됩니다. 이 동작을 재정의하려면 경로에서 CamelFileName
헤더 값을 명시적으로 설정할 수 있습니다.
from("file:input/directory?antInclude=*/.txt") .aggregate(constant(true), new ZipAggregationStrategy()) .completionFromBatchConsumer().eagerCheckCompletion() .setHeader(Exchange.FILE_NAME, constant("reports.zip")) .to("file:output/directory");
from("file:input/directory?antInclude=*/.txt")
.aggregate(constant(true), new ZipAggregationStrategy())
.completionFromBatchConsumer().eagerCheckCompletion()
.setHeader(Exchange.FILE_NAME, constant("reports.zip"))
.to("file:output/directory");