342.4. unmarshal

이 예에서는 MY_QUEUE라는 ActiveMQ 큐에서 Tar 파일 페이로드를 원래 형식으로 분할하고 이를 UnTarpedMessageProcessor 로 보냅니다.

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

Tar 파일에 하나 이상의 항목이 있는 경우 TarFileDataFormat의 usingIterator 옵션을 true로 설정하고 splitter를 사용하여 추가 작업을 수행할 수 있습니다.If the Tar File has more then one entry, the usingIterator option of TarFileDataFormat to be true, and you can use splitter to do the further work.

  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();