383.4. unmarshal

在本例中,我们将 Zip 文件有效负载从名为 MY_QUEUE 的 ActiveMQ 队列解压缩到其原始格式,并将它转发到 UnZippedMessageProcessor

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

如果 zip 文件具有多个条目,则 ZipFileDataFormat 的使用Iterator 选项为 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();