Итак, недавно я начал изучать Camel. В рамках процесса я решил просмотреть все примеры (перечисленные ЗДЕСЬ и доступные, когда вы ЗАГРУЗИТЬ пакет со всеми примерами и документами) и посмотреть, что я мог узнать.
Один из примеров, Балансировка нагрузки с использованием Mina, привлек мое внимание, потому что он использует Mina в разных JVM и имитирует балансировщик нагрузки с циклическим перебором.
У меня есть несколько проблем с этим примером. Сначала он использует Spring DSL вместо Java DSL, который используется в моем проекте и который мне теперь намного легче понять (в основном потому, что я к нему привык). Итак, первый вопрос: есть ли версия этого примера, использующая только Java DSL вместо Spring DSL для маршрутов и bean-компонентов?
Мой второй вопрос связан с кодом. В описании говорится, и я цитирую:
В этой демонстрации каждые десять секунд на сервере балансировки нагрузки Camel создается объект Report. Этот объект отправляется балансировщиком нагрузки Camel на сервер MINA, где затем объект сериализуется. Один из двух серверов MINA (localhost: 9991 и localhost: 9992) получает объект и обогащает сообщение, задавая поле response объекта Report. Ответ возвращается сервером MINA клиенту, который затем записывает ответ в консоль.
Итак, из того, что я прочитал, я понимаю, что сервер MINA 1 (для примера) получает отчет от балансировщика нагрузки, изменяет его, а затем отправляет этот отчет обратно какому-то невидимому клиенту. После проверки кода я не вижу клиентского java-класса или XML, и когда я запускаю, сервер просто отправляет результаты в командную строку. Где клиент ?? Что это за клиент?
Код сервера MINA-1 представлен здесь:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<bean id="service" class="org.apache.camel.example.service.Reporting"/>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route id="mina1">
<from uri="mina:tcp://localhost:9991"/>
<setHeader headerName="minaServer">
<constant>localhost:9991</constant>
</setHeader>
<bean ref="service" method="updateReport"/>
</route>
</camelContext>
</beans>
Я не понимаю, как метод updateReport()
волшебным образом печатает объект на моей консоли. Что, если я хочу отправить сообщение на третий сервер MINA? Как бы я это сделал? (Мне нужно было бы добавить новый маршрут и правильно отправить его на URI 3-го сервера?)
Я знаю, что большинство этих вопросов могут показаться глупыми, но я был бы признателен, если бы кто-нибудь мог мне помочь. Версия Java DSL действительно могла бы мне помочь.