2015-01-08 4 views
0

Я сталкиваюсь с сложным корпусом. Что я делаю, как следующие шаги:Apache Camel получить пустой ответ от пристани

1) <from uri="jetty:http://0.0.0.0:30100/jetty/test"/>

2) <to uri="hazelcast-client:master-test-series" />

3) <to uri="bean:modelSeriesWrapperTest" />

4)

<split parallelProcessing="true" streaming="true">  
    <simple>${body}</simple> <to uri="direct:dw.model.test"/> 
    </split> 

5) От anoth эр маршрут

<from uri="direct:dw.model.test"/> 
    <aggregate strategyRef="myAggregatorStrategy" 
       completionTimeout="1000"> 
       <correlationExpression> 
        <constant>true</constant> 
       </correlationExpression> 
       <marshal ref="modelSeriesVariantColourGson" /> 
       <camel:to uri="file:src/data/catask/output?fileName=output.xml"/> 
    </aggregate> 

Проблема заключается в том, что ответ молы пуст. Я использую трассировку TCP для отслеживания запроса и ответа, Content-Length равно 0. Но файл output.xml имеет правильный контент формата JSON. Даже я пересекаю <camel:to uri="file:src/data/catask/output?fileName=output.xml"/>. Реакция причала по-прежнему пуста.

Я пытаюсь использовать шаблон InOut, он не работает. Кажется, что причал возвращается напрямую, а не ожидая раскола. Я пытаюсь установить In и Out тело, это тоже не работает. Я Google каждый случай, который я могу изобразить. Нет полезного случая. Не могли бы вы помочь? Большое спасибо.

ответ

1

Если вы хотите, чтобы ответ пристани, чтобы включить любую информацию из вашего агрегатора, то вы должны использовать разветвитель только подход, как документированы:

сплиттер имеет встроенную агрегацию , и это гарантирует, что когда сплиттер сделан, он также объединяется, а затем вы можете использовать это как ответ причала.

Когда вы используете <aggregate>, тогда это будет отдельный обмен. Чтобы понять это больше, прочитайте больше об агрегированном eip и других SO, а также в различных книгах Camel и т. Д.

+0

Большое спасибо за ваш ответ. –

Смежные вопросы