Ejemplo: Apache Camel y Blueprint

    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

    .

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *