384.4. Unmarshal

この例では、MY_QUEUE という ActiveMQ キューから Zip ファイルペイロードを元の形式にアンマーシャリングして UnZippedMessageProcessor に転送し、処理します。

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

zip ファイルに複数のエントリーがある場合には、ZipFileDataFormat の usingIterator オプションを true にすると、スプリッターを使用してさらに作業を行うことができます。

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 をスプリッターの式として直接使用できます

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