383.4. unmarshal

이 예제에서는 MY_QUEUE라는 ActiveMQ 큐에서 원래 형식으로 Zip 파일 페이로드를 해제한 후 처리를 위해 UnZippedMessageProcessor 로 전달합니다.

from("activemq:queue:MY_QUEUE")
    .unmarshal().zipFile()
    .process(new UnZippedMessageProcessor());

zip 파일에 더 많은 항목이 있는 경우 ZipFileDataFormat을 사용하는 것이 true인 경우 splitter를 사용하여 추가 작업을 수행할 수 있습니다.

ZipFileDataFormat zipFile = new ZipFileDataFormat();
zipFile.setUsingIterator(true);

from("file:src/test/resources/org/apache/camel/dataformat/zipfile/?consumer.delay=1000&noop=true")
    .unmarshal(zipFile)
    .split(body(Iterator.class)).streaming()
        .process(new UnZippedMessageProcessor())
    .end();

또는 ZipSplitter를 다음과 같이 직접 splitter에 대한 표현으로 사용할 수 있습니다.

from("file:src/test/resources/org/apache/camel/dataformat/zipfile?consumer.delay=1000&noop=true")
    .split(new ZipSplitter()).streaming()
        .process(new UnZippedMessageProcessor())
    .end();