Ejemplo Apache Camel con blueprint en Apache Karaf. Maven nos permite generar un proyecto base desde un «archetype», para ello hemos ejecutado el siguiente comando:
mvn archetype:generate -DarchetypeGroupId=org.apache.karaf.archetypes -DarchetypeArtifactId=karaf-blueprint-archetype -DarchetypeVersion=4.0.0 -DgroupId=com.neodoo -DartifactId=neodoo-blueprint -Dversion=1.0-SNAPSHOT -Dpackage=com.neodoo.blueprint
Esto nos generara un directorio con el proyecto base listo apra compilar. En nuestro caso hemos añadido dos rutas camel al blueprint (src/main/resources/OSGI-INF/blueprint/my_service.xml), quedando asi:
<bean id="serviceBean" class="com.neodoo.blueprint.MyServiceImpl"/> <service ref="serviceBean" interface="com.neodoo.blueprint.MyService"/> <camelContext xmlns="http://camel.apache.org/schema/blueprint"> <!-- Uncomment for use custom property file. create a config.properties file with your prperties in src/main/resouces and then you can insert them here in blueprint typing: {{propertyName}} --> <!-- <propertyPlaceholder id="properties" location="classpath:config.properties"/>--> <route id="RUTA 1"> <from uri="timer://test?fixedRate=true&period=10000" /> <setBody> <simple>Message at ${date:now:yyyy-MM-dd HH:mm:ss}</simple> </setBody> <log message="[EXAMPLE INBOUND] Received: ${body}"/> <to uri="log:test" /> </route> <route id="RUTA 2"> <from uri="timer://test?fixedRate=true&period=10000" /> <setBody> <simple>Message at ${date:now:yyyy-MM-dd HH:mm:ss}</simple> </setBody> <bean ref="serviceBean" method="echo"/> <log message="[EXAMPLE INBOUND] Received: ${body}"/> <to uri="log:test" /> </route> </camelContext>
Si ahora compilamos, ya tendremos el JAR listo para desplegarlo.
Si no disponemos de un servidor Apache Karaf, como es nuestro caso, podemos montar uno rápidamente en AWS usando nuestro producto de AWS Marketplace, Apache Karaf by Neodoo.
Una vez desplegada la instancia de AWS, accedemos al servidor vía ssh y nos colocamos en el directorio de instalación de Karaf: /usr/java/apache-karaf/
Si ejecutamos bin/karaf
, se lanzara y entrara en la consola de comandos. Desde esta, hemos tenido que instalar algunos «features» para que nuestro modulo jar funcione:
karaf@root()> feature:repo-add hawtio
karaf@root()> feature:repo-add camel
karaf@root()> feature:uninstall hawtio
karaf@root()> feature:install hawtio
karaf@root()> feature:install camel-blueprint
karaf@root()> feature:install deployer
Por ultimo, solo nos queda desplegar el jar. Para ello subimos el jar compilado anteriormente al servidor (Via scp por ejemplo) y lo copiamos en: /usr/java/apache-karaf/deploy/
, seguidamente si vamos a ver los logs veremos la ejecución de nuestras rutas Camel de ejemplo. Podemos verlos ejecutando vi /usr/java/apache-karaf/data/log/karaf.log
o desde dentro de la consola Karaf: karaf@root()> log:display
Deberíamos ver algo asi:
2020-08-07T11:33:47,233 | INFO | Blueprint Event Dispatcher: 1 | InternalRouteStartupManager | 241 - org.apache.camel.camel-base - 3.4.2 | Route: RUTA 1 started and consuming from: timer://test 2020-08-07T11:33:47,234 | INFO | Blueprint Event Dispatcher: 1 | InternalRouteStartupManager | 241 - org.apache.camel.camel-base - 3.4.2 | Route: RUTA 2 started and consuming from: timer://test 2020-08-07T11:33:47,278 | INFO | Blueprint Event Dispatcher: 1 | AbstractCamelContext | 241 - org.apache.camel.camel-base - 3.4.2 | Total 2 routes, of which 2 are started 2020-08-07T11:33:47,279 | INFO | Blueprint Event Dispatcher: 1 | AbstractCamelContext | 241 - org.apache.camel.camel-base - 3.4.2 | Apache Camel 3.4.2 (camel-7) started in 0.144 seconds 2020-08-07T11:33:47,281 | INFO | fileinstall-/usr/java/apache-karaf-4.2.8/deploy | fileinstall | 10 - org.apache.felix.fileinstall - 3.6.4 | Started bundle: file:/usr/java/apache-karaf-4.2.8/deploy/neodoo-blueprint-1.0-SNAPSHOT.jar 2020-08-07T11:33:48,252 | INFO | Camel (camel-7) thread #10 - timer://test | RUTA 1 | 249 - org.apache.camel.camel-core-engine - 3.4.2 | [EXAMPLE INBOUND] Received: Message at 2020-08-07 11:33:48 2020-08-07T11:33:48,253 | INFO | Camel (camel-7) thread #10 - timer://test | test | 240 - org.apache.camel.camel-api - 3.4.2 | Exchange[ExchangePattern: InOnly, BodyType: String, Body: Message at 2020-08-07 11:33:48] 2020-08-07T11:33:48,255 | INFO | Camel (camel-7) thread #10 - timer://test | RUTA 2 | 249 - org.apache.camel.camel-core-engine - 3.4.2 | [EXAMPLE INBOUND] Received: Echo processed: Message at 2020-08-07 11:33:48 2020-08-07T11:33:48,255 | INFO | Camel (camel-7) thread #10 - timer://test | test | 240 - org.apache.camel.camel-api - 3.4.2 | Exchange[ExchangePattern: InOnly, BodyType: String, Body: Echo processed: Message at 2020-08-07 11:33:48]
Para tus proyectos en Java, te ofrecemos servidores provisionados en Amazon AWS certificados por nuestra compañía: https://blog.neodoo.es/2020/05/18/para-tus-proyectos-en-java-te-ofrecemos-servidores-provisionados-en-amazon-aws-certificados-por-nuestra-compania/
Si te ha resultado este ejemplo de Apache Camel con blueprint en Apache Karaf, compártelo en redes sociales.
0 comentarios