315.3. Unmarshal
この例では、MY_QUEUE という ActiveMQ キューから Tar ファイルペイロードを元の形式にアンマーシャリングして UnTarpedMessageProcessor
に転送し、処理します。
from("activemq:queue:MY_QUEUE").unmarshal().tarFile().process(new UnTarpedMessageProcessor());
from("activemq:queue:MY_QUEUE").unmarshal().tarFile().process(new UnTarpedMessageProcessor());
Tar ファイルに複数のエントリーがある場合には、TarFileDataFormat の usingIterator オプションを true にすると、スプリッターを使用してさらに作業を行うことができます。
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();
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();
from("file:src/test/resources/org/apache/camel/dataformat/tarfile?consumer.delay=1000&noop=true")
.split(new TarSplitter())
.streaming()
.process(new UnTarpedMessageProcessor())
.end();