Camel-netty4: как ждать ответа перед отправкой следующего запроса - PullRequest
0 голосов
/ 17 мая 2018

Я создал маршрут, который принимает запросы от нескольких производителей и отправляет их на удаленный сервер, используя netty4 с запросом-ответом.Однако, когда верблюд отправляет запрос на удаленный сервер и ожидает ответа, следующий входящий запрос получен и требуется отправить на удаленный сервер, но получил IOException, поскольку верблюд не может получить ответ.

Итак, какустановить Camel-Netty4 отправлять запрос и ждать ответа перед отправкой далее.

Конфигурация маршрута: from ("direct: DirectProcessOut? block = true") .to ("netty4: tcp: //192.168.1.2: 8000 синхронизации = верно и синхронные = верно и reuseChannel = истина ")

1 Ответ

0 голосов
/ 01 июня 2018

Я действительно столкнулся с подобной проблемой, пытаясь отправить несколько сообщений одновременно на основе строк в таблице базы данных.Звонки не дожидаются завершения друг друга, и, по сути, наступают друг на друга и либо зависают, либо взрываются.

Решение, которое я в итоге нашел, состояло в том, чтобы использовать очередь сообщений.Возьмите ваши запросы и направьте их в один маршрут activemq.

Так что-то вроде:

<camelContext xmlns="http://camel.apache.org/schema/blueprint">
    <route>
       <from uri="direct:direct:DirectProcessOut"/>
       <to uri="activemq://processOutQueue"/>
    </route>
</camelContext>
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
    <route>
       <from uri="activemq://processOutQueue"/>
       <to uri="netty4:tcp://192.168.1.2:8000?sync=true&amp;synchronous=true&amp;reuseChannel=true"/>
    </route>
</camelContext>

Мой случай был немного другим, поэтому я не уверен, сохранит ли это вашесообщение, которое вы хотите отправить.Но, надеюсь, это даст вам возможность начать.

...