Ejemplo: Apache Camel y Blueprint

E

Presentamos un proyecto de plano de Camache Camel completamente funcional aquí. Proporciona código de muestra para construir canales, crear beans y enviar Blueprint a ServiceMix.

Glasphlean

En resumen, el Blueprint es como la Spring. En realidad, es como Spring, pero con ligeras diferencias. OSGi Alliance creó la especificación Blueprint Container (utilizando Eclipse Gemini Blueprint como implementación de referencia) para proporcionar una mejor segmentación de módulos para las aplicaciones, la capacidad de agregar, eliminar y actualizar dinámicamente módulos en un sistema existente, la capacidad de implementar múltiples versiones de un módulo simultáneamente (y tener clientes conectados automáticamente al correspondiente), y un modelo de servicio dinámico. Spring tiene un gran impacto en el plan y, por lo tanto, implementa muchas características de Spring, aunque está más enfocado en aplicaciones OSGi.

El archivo Blueprint está escrito en XML y normalmente se encuentra en el OSGI-INF/blueprint/ directorio, que es su ubicación predeterminada. Este directorio se empaquetará con el archivo JAR resultante, y los contenedores OSGi se verán como ServiceMix por defecto para verificar uno o más archivos Blueprint. Esto no parece estar muy bien documentado en ninguna parte, pero tenga en cuenta que los archivos Blueprint no necesitan estar empaquetados dentro de un archivo JAR. Son archivos independientes colocados en un contenedor OSGi (es decir, caen en el deploy/ directorio de ServiceMix) solo. Esto puede resultar muy útil para reconfigurar rutas sobre la marcha.

El código

Aquí, le mostraremos cómo crear una ruta Camel implementable simple utilizando una combinación de Blueprint (para la especificación de la ruta) y Java (para el procesamiento de mensajes). El directorio del proyecto está estructurado de la siguiente manera:

Pharos.sh-example-blueprint/
    pom.xml
    src/
        main/
            java/
                com.Pharos.sh.example.WeatherProcessor.java
            resources/
                OSGI-INF/
                    blueprint/
                        blueprint-example.xml
        test/

Es muy conveniente usar Maven para rondas OSGi, principalmente debido al suministro plugin maven-bundle creado por el proyecto Apache Felix. Este plugin, en vista de algunas configuraciones en el pom.xml su archivo MANIFEST.MF se generará para usted mientras usa BND, ahorrándose muchos dolores de cabeza.

El es blueprint-example.xml Nuestro archivo contiene nuestras definiciones de la forma Camel en XML, que es capaz de tener el mismo nivel de datos y lenguaje específico para un dominio Java (DSL). El contenido tiene este aspecto:

<?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
            http://cxf.apache.org/blueprint/jaxws http://cxf.apache.org/schemas/blueprint/jaxws.xsd
            http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd
           ">
 
  <bean id="weatherProcessor" class="com.Pharos.sh.example.WeatherProcessor" />
    
  <camelContext xmlns="http://camel.apache.org/schema/blueprint">

    <route>
      <from uri="timer:fetch?period=3600s&amp;delay=5s" />
      <to uri="direct:trigger" />
    </route>
    
    <route>
      <from uri="direct:trigger" />
      <to uri="weather:foo?location=Omaha,United States&amp;period=7 days&amp;units=IMPERIAL" />
      <process ref="weatherProcessor" />
      <to uri="log:com.Pharos.sh.example?level=DEBUG" />
      <to uri="file:/Users/scott/Desktop/weather?fileName=omaha.txt" />
    </route>

  </camelContext>
 
</blueprint>

Cada archivo Blueprint comienza con el <blueprint> etiquetado y generalmente el <camelContext> etiqueta para especificar rutas Camel. En este ejemplo, un temporizador simple muestra nuestra ruta cada hora (3600 segundos), en la que luego recibe el pronóstico de 7 días para Omaha, NE USA y guarda el resultado en un archivo de escritorio. Antes de que se guarden los datos, se enrutan a través de un procesador, definido como una mujer Java antes <camelContext> comienza la etiqueta. Esta mujer, que se muestra a continuación, presenta el org.apache.camel.Processor interfaz y solo los datos que necesitamos se extraen de los datos meteorológicos JSON restaurados. Analizando el JSON y restaurando la cadena del formulario “[date]: [temperature] Celsius “para guardar en un archivo.

En el sitio web de Apache Camel, casi todas las páginas de los componentes de Camel proporcionan ejemplos tanto en Java como en Blueprint, lo que hace que el desarrollo de rutas sea tan fácil, si no más fácil, en Blueprint. Me resultó difícil encontrar muchos ejemplos de código Blueprint, a pesar de ser muy popular, así que si alguna vez duda de las capacidades de Blueprint, asuma que cualquier Spring que funcione en Blueprint funcionará también con las características / esquemas adicionales específicos de Camel.

Usando el código

Si desea probar esto usted mismo, puede descargar el código a continuación. Para ejecutarlo, debe tener instalados Apache Maven y Apache ServiceMix. Cree el proyecto navegando a la Pharos.sh-example-blueprint directorio, ejecutando mvn package, y finalmente, coloque el archivo JAR resultante en ServiceMix deploy/ directorio. Debido a que el JAR resultante es un paquete OSGi, sus dependencias no serán las esperadas. Deberá agregar las siguientes dependencias deploy/ carpeta también:

  • org.apache.felix.eventadmin-1.3.2.jar
  • camel weather-2.12.3.jar
  • camel-core-osgi-2.12.3.jar
  • org.osgi.core-1.0.0.jar
  • json-20140107.jar

Debería poder encontrar todos estos JAR en su repositorio local de Maven (~/.m2/) después de la construcción del proyecto con Maven.

Y finalmente, para ejecutar el paquete, inicie ServiceMix ejecutando servicemix o start desde el [ServiceMix Home Dir]/bin. En unos segundos, debería weather/ aparece un directorio en el escritorio que contiene un archivo con el pronóstico del tiempo para Omaha del día siguiente.

Recursos

.

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad