342.4. unmarshal

在本例中,我们从名为 MY_QUEUE 的 ActiveMQ 队列传播 Tar 文件有效负载,并将其转发到 UnTarpedMessageProcessor

from("activemq:queue:MY_QUEUE").unmarshal().tarFile().process(new UnTarpedMessageProcessor()); 

如果 Tar 文件有更多条目,则使用 TarFileDataFormat 的使用Iterator 选项为 true,您可以使用 splitter 进行进一步工作。

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

或者您可以使用 TarSplitter 作为拆分人的表达式,如下所示

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