ServiceMix и Camel: как мне создавать маршруты?

#java #xml #apache-camel #apache-servicemix #blueprint-osgi

#java #xml #apache-camel #apache-servicemix #план -osgi

Вопрос:

Эта часть головоломки — мой кошмар, я развернул ServiceMix и 2 Java-приложения на 2 разных экземплярах tomcat :

Первое приложение :

 http://localhost:8080/textmsgClient
 

Второе приложение :

 http://localhost:8181/textmsgServer
 

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

Я создал XML-файл схемы элементов в ./deploy каталоге, но какие маршруты я должен в них поместить?

Я не могу этого сделать :

   <route>
    <from uri="http://localhost:8080/textmsgClient"/>
    <log message="Test log"/>
    <to uri="http://localhost:8181/textmsgServer"/>
  </route>
 

так что же делать правильно?

кстати, мой XML-файл выглядит так :

 <?xml version="1.0" encoding="UTF-8"?>
<blueprint
    xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
      http://www.osgi.org/xmlns/blueprint/v1.0.0
      http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">

    <camelContext xmlns="http://camel.apache.org/schema/blueprint">
      <route>
        <from uri="file:camel/input"/>
        <log message="Moving ${file:name} to the output directory"/>
        <to uri="file:camel/output"/>
      </route>
    </camelContext>

</blueprint>
 

Ответ №1:

Взгляните на список компонентов Camel. Не зная, какой тип данных вы отправляете между службами, трудно рекомендовать, какой из них использовать. Тем не менее, есть компонент практически для каждого типа данных, который вы можете себе представить, и даже поддержка для создания собственного!

Редактировать Примером может быть:

 <route>
    <from uri="direct:textmsgClient"/>
    <log message="Test log"/>
    <to uri="direct:textmsgServer"/>
</route>
 

Комментарии:

1. Привет, большое спасибо за ответ, я бы хотел простое перенаправление HTTP с использованием Camel, но между этими двумя разными приложениями. Также какой URL-адрес я должен настроить в первом приложении, чтобы оно могло взаимодействовать через ServiceMix и Camel.

2. Что вы имеете в виду под перенаправлением http? Можете ли вы привести пример того, чего вы пытаетесь достичь, и какое сообщение будет передаваться между службами?

3. Мое первое приложение прямо сейчас напрямую взаимодействует с моим вторым приложением. Я хочу поместить Camel между ними. Поэтому я говорю своему первому приложению сначала связаться с Camel (по определенному URI), а Camel пересылает это второму приложению. Вы понимаете, что я имею в виду?

4. Старайтесь не думать об этом как о пересылке — один маршрут помещает сообщения в конечную точку, другой маршрут принимает сообщения от конечной точки. Итак, вам нужен маршрут в вашем первом приложении, который принимает сообщения из источника и помещает их куда-нибудь (опять же, взгляните на список компонентов, direct полезен). Затем во втором приложении возьмите сообщения с той же конечной точки и что-то с ней сделайте (может быть, взгляните на компонент bean?). Не зная, как вы используете свое приложение, какие сообщения вы отправляете, как вы их отправляете или что вы с ними делаете, я не могу быть более полезным.