Mostrando las entradas con la etiqueta Camel. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Camel. Mostrar todas las entradas

domingo, 16 de julio de 2017

El patrón arquitectónico Event-Driver

Leyendo el libro, "Software Architecture Patterns" les dejo este pequeño resumen:

El patrón arquitectónico Event-Driver se utiliza para crear arquitecturas escalables, se puede utilizar  en grandes aplicaciones como en pequeñas.

Este patrón arquitectónico tiene 2 topologías, el mediador y el broker (corredor, como es una fea traducción dejo su nombre en ingles).

La topología del mediador se utiliza comúnmente cuando se necesita orquestar múltiples pasos dentro de un evento a través de un mediador central, mientras que la topología de broker se utiliza cuando se desea encadenar sucesos sin el uso de un mediador central. Debido a que las características de la arquitectura y las estrategias de implementación difieren entre estas dos topologías, es importante entender cada una de ellas para saber cuál es la más adecuada para cada  situación particular.



La topología del mediador es útil para eventos que tienen varios pasos y requieren algún nivel de orquestación para procesar el evento.

Hay cuatro tipos principales de componentes de arquitectura dentro de la topología del mediador: colas de eventos, un mediador de eventos, canales de eventos y procesadores de eventos. El flujo de eventos comienza con un cliente que envía un evento a una cola de eventos, que se utiliza para transportar el evento al mediador de eventos. El mediador de eventos recibe el evento inicial y orquesta dicho evento enviando eventos asíncronos adicionales a los canales de eventos para ejecutar cada paso del proceso. Los procesadores de eventos, que escuchan en los canales de eventos, reciben el evento del mediador de eventos y ejecutan lógica empresarial específica para procesar el evento.

La implementación más simple y más común del mediador de eventos es a través de frameworks open source como Spring Integration, Apache Camel o Mule ESB. Los flujos de eventos en estos frameworks se implementan típicamente a través de código Java o un DSL (lenguaje específico de dominio). Para una mediación y una orquestación más sofisticadas, puede utilizar BPEL (lenguaje de ejecución de procesos empresariales) junto con un motor BPEL open source como Apache ODE. BPEL es un lenguaje XML estándar que describe los datos y los pasos necesarios para procesar un evento inicial. Para aplicaciones muy grandes que requieren una orquestación mucho más sofisticada (incluyendo pasos que involucran interacciones humanas), puede implementar el mediador de eventos utilizando un gestor de procesos empresariales (BPM) como jBPM.


La topología broker se diferencia de mediador porque no hay un mediador central y único, sino que el flujo de eventos esta distribuido a través de los componentes del procesador de eventos de una manera similar a una cadena a través de un agente de mensajes ligero (por ejemplo, ActiveMQ, HornetQ, etc.). Esta topología es útil cuando se tiene un flujo de procesamiento de eventos relativamente simple y no desea (o necesita) orquestación de eventos centrales.

Hay dos tipos principales de componentes de arquitectura dentro de la topología de intermediario: un componente de broker y un componente de procesador de sucesos. El componente de broker puede centralizarse o federarse y contiene todos los canales de eventos que se utilizan en el flujo de eventos.

El patrón de arquitectura event-driver es un patrón relativamente complejo de implementar, principalmente debido a su naturaleza asincrónica distribuida. Al implementar este patrón, debe abordar varios problemas de arquitectura distribuida, como la disponibilidad de procesos remotos, la falta de capacidad de respuesta y la lógica de reconexión de intermediarios en caso de un fallo del intermediario o mediador.

Una consideración a tener en cuenta al elegir este patrón de arquitectura es la falta de transacciones atómicas para un solo proceso de negocio. Debido a que los componentes del procesador de eventos están altamente disociados y distribuidos, es muy difícil mantener una unidad transaccional de trabajo a través de ellos. Por esta razón, al diseñar su aplicación utilizando este patrón, debe pensar continuamente sobre qué eventos pueden y no pueden ejecutarse de forma independiente y planificar la granularidad de los procesadores de sucesos en consecuencia. Si descubre que necesita dividir una sola unidad de trabajo en los procesadores de eventos, es decir, si utiliza procesadores independientes para algo que debería ser una transacción indivisa, probablemente no sea el patrón adecuado para su aplicación.

Dejo link: http://radar.oreilly.com/2015/02/variations-in-event-driven-architecture.html

domingo, 11 de marzo de 2012

Usando Apache Camel desde Apache ServiceMix


Para mayor comprensión pueden ver el siguiente post:
http://emanuelpeg.blogspot.com/2012/03/primeros-pasos-con-apache-servicemix.html

La idea sería construir un pequeño ejemplo de integración con Apache Camel y vamos a deployarlo en ServiceMix. La idea es copiar un archivo desde la carpeta input a la carpeta output y para mantener un registro escribir un log.

Uno de los caminos más simples para deployear un router de Camel en ServiceMix es definir el router en un Blueprint XML.




    
      
        
        
        
      
    




Este archivo hay que guardarlo en la carpeta deploy de servicemix yo le puse copia.xml

Ahora a deployear, si ejecutamos osgi:list vamos a ver nuestro servicio llamado “copia.xml”


Con osgi:start y el id del servicio podemos levantar el servicio; en mi caso el número 156

osgi:start 156

y si lo queremos parar con

osgi:stop 156

Ya esta! Si hacemos:

log:display | grep INFO

Podemos ver como se movieron los archivos.




jueves, 8 de marzo de 2012

Apache ServiceMix







Apache ServiceMix es un flexible ESB open source, que integra funcionalidad de diversos productos de Apache como Apache ActiveMQ, Camel, CXF, ODE y Karaf. Provee el funcionamiento de un ESB integrado a una herramienta OSGI.

Las características de Apache ServiceMix son:


  • Mensajería segura gracias a Apache ActiveMQ
  • Mensajería, enrrutamiento y patrones de integración para Empresas con Apache Camel
  • ServiceMix NMR incluye eventos ricos, mensajería y auditoría lo que permite una integración con bajo acoplamiento.
  • Completo WS-BPEL con Apache ODE.
  • Basado en OSGI con la utilización Apache Karaf.


Además es licencia Apache 2.


Dejo Link:

http://servicemix.apache.org/

sábado, 4 de septiembre de 2010

FUSE


FUSE es una comunidad que promueve el uso de productos Apache para el uso de SOA. La idea es crear una comunidad Open Source de uso de SOA, de esta forma poder compartir experiencias, conocimiento, etc.

Dejo el link: http://fusesource.com/

miércoles, 15 de julio de 2009

Apache Camel

Encontre estos tutoriales de apache camel: http://www.tecsisa.com/index.igw?item=1631

Muy bueno!!!


Apache Camel es una implementación de los patrones para integración empresarial descritos en el libro Enterprise Integration Patterns de Gregor Hohpe y Bobby Woolf hecha en Spring.
Estos patrones de diseño permiten integrar sistemas heterogéneos usando sistemas de Mensajería. Actualmente Apache Camel soporta un gran número de transportes de mensajería, como JMS, ActiveMQ, CXF Bus, JBI e incluso HTTP simple.