Немного окольный, но я использую верблюдов Потоковое кэширование .После настройки просто проверьте, преобразовано ли тело в StreamCache.(Поток, который допускает многократное чтение. В первую очередь полезен при работе с очень большими файлами).Мне приходится иметь дело с файлами размером более 10 ГБ, так что это хороший способ не сжечь jvm с помощью outoffmemory, но также не беспокоиться о потере полезной нагрузки, читая его.
План (не уверен, что такое jboss equivelent) хотел бы
<!-- define a bean of type StreamCachingStrategy which CamelContext will automaticly use -->
<bean id="streamStrategy" class="org.apache.camel.impl.DefaultStreamCachingStrategy">
<property name="spoolDirectory" value="${java.io.tmpdir}/camelcache/#uuid#/"/>
<property name="spoolThreshold" value="52428800"/>
<property name="spoolUsedHeapMemoryThreshold" value="70"/>
<property name="anySpoolRules" value="true"/>
</bean>
<camelContext streamCache="true" xmlns="http://camel.apache.org/schema/blueprint">
Вы можете создать бин Predicate , чтобы выполнить реальный тест, и использовать его на верблюжьем маршруте, чтобы повлиять на управление потоком.
Если вас не беспокоит память, вы можете сойти с ума и в своем предикате взять полезную нагрузку в виде потока, прочитать все байты в память как байт [], а затем протестировать размерbyte [] (или считайте байты, когда вы читаете их из потока).Просто в зависимости от источника полезной нагрузки вы не сможете сбросить поток, если сначала не кешируете его.