Intermediate Routing

La lógica de enrutamiento de mensajes (la lógica de decisión que determina cómo se transmiten los mensajes de un servicio a otro) puede ser embebido dentro de la lógica de cada servicio en una composición.Esto permite la ejecución exitosa de rutas de mensajes predeterminados. Sin embargo, puede haber factores imprevistos que no se contabilizan en la lógica de enrutamiento integrado, que puede conducir a fallo del sistema no anticipado.Por ejemplo:
• El servicio de destino del mensaje que se está transmitiendo está temporalmente (o incluso permanente) disponible.
• La lógica de enrutamiento integrado contiene una condición "coger todos" para manejar excepciones, pero el destino del mensaje resultante sigue siendo incorrecta.
• La ruta del mensaje planeado originalmente no se puede llevar a cabo, lo que resulta en un rechazo del mensaje del consumidor previa del servicio.

 La lógica de encaminamiento multi-propósito puede ser abstraído de manera que existe como una parte separada de la arquitectura en apoyo de múltiples servicios y composiciones de servicio. Más comúnmente, esto se consigue mediante el uso de agentes de servicio por eventos que de forma transparente interceptan los mensajes y dinámicamente determinar sus caminos.
 Este patrón se aplica por lo general como una aplicación especializada de Service Agent, los agentes de enrutamiento centrado necesarios para realizar el enrutamiento dinámico se proporcionan a menudo por el middleware de mensajería y son un componente fundamental de los productos ESB. Estos tipos de agentes fuera del dominio pueden ser configurados para llevar a cabo una serie de funciones de enrutamiento. Sin embargo, la creación de agentes de enrutamiento personalizados también es posible y no infrecuentes, especialmente en entornos que necesitan para apoyar composiciones complejas de servicios con requisitos especiales.
Las formas comunes de la funcionalidad de enrutamiento incluyen:
• Content-Based Routing - En esencia, este tipo de enrutamiento determina el camino de un mensaje basado en su contenido. Puede ser utilizado para modelar procesos de negocio complejos y proporcionar una forma eficiente de recomponer los servicios sobre la marcha. Tales decisiones de enrutamiento pueden necesitar implicar el acceso a un motor de reglas de negocio para evaluar con precisión los destinos de mensajes.
• Load Balancing - Esta forma de agente de enrutamiento se ha convertido en una parte importante de entornos donde las demandas de uso concurrentes son comunes. Un router con equilibrio de carga es capaz de dirigir un mensaje a uno o más instancias idénticas de servicio con el fin de ayudar a la actividad de servicio, se lleva a cabo tan eficientemente como sea posible.
• Routing - En este caso, el agente de enrutamiento está conectado directamente a un único servicio físico en cualquier punto en el tiempo. Cuando los mensajes llegan, el agente es capaz de enrutarlos a instancias de servicio diferentes o implementaciones de servicios redundantes. Esto acomoda requisitos a prueba de más de estándar y permite que los servicios que se mantengan o actualizados sin poner en riesgo "la interrupción del servicio" a los consumidores.
Independientemente de la naturaleza de la lógica de enrutamiento, es deseable ser capaz de actualizar y modificar los parámetros de enrutamiento dinámicamente ideal incluso para los analistas de negocio para que puedan adaptar y controlar la lógica de negocio en tiempo real. Esto es particularmente importante cuando la lógica de negocio está sujeta a cambios frecuentes. Si los cambios son muy frecuentes, puede ser más beneficioso para modelar la lógica de enrutamiento a través de la extracción de reglas de negocio complejas que describen la lógica declarativa sobre el contenido del mensaje y utilizan los resultados para tomar la decisión de enrutamiento.
 Principios
\* Reusabilidad de servicio
 Ventajas
 \*Permite la automatización de decisiones complejas y la rápida adaptación a los cambiantes requisitos empresariales
\* Un sistema de gestión de reglas de enrutamiento centralizado puede ayudar a aliviar el riesgo de introducción de posibles fallos.
\* Perdida de acoplamiento
\* Servicios reutilizables
\* Composición de servicios