Estoy intentando determinar mis opciones para agrupar mi aplicación ServiceMix 3.3.1/Camel 2.1/AMQ 5.3. Estoy realizando un procesamiento de mensajes de gran volumen y necesito clúster para obtener una alta disponibilidad y escalabilidad horizontal.Apache Camel con clúster ActiveMQ
Aquí es básicamente lo que hace mi aplicación ... HTTP-> QUEUE-> proceso-> base de datos-> tema
a partir de ("amarre: http://0.0.0.0/inbound ") .para (" activemq: inboundQueue");
a partir de ("activemq:? InboundQueue maxConcurrentConsumers = 50") .Proceso (decode()) .Proceso (transformar()) .Proceso (validar()) .Proceso (SaveToDatabase()) . a ("activemq: topic: ouboundTopic");
lo tanto, he leído todos los ServiceMix y páginas de agrupación AcitveMQ, pero todavía no estoy seguro de qué camino tomar.
Sé que puedo usar una configuración Maestro/Esclavo para HA, pero eso no ayuda con la escalabilidad.
He leído acerca de la red de corredores, pero no estoy seguro de cómo se aplica. Por ejemplo, si despliego rutas Camel idénticas en múltiples nodos en un clúster, ¿cómo "interactuarán" exactamente? Si señalo mi productor HTTP en un nodo (NodeA), ¿qué mensajes se enviarán a NodeB? ¿Se compartirán las colas/temas entre el Nodo A/B ... en caso afirmativo, cómo se dividen o duplican los mensajes? Además, ¿cómo se suscribiría un cliente externo a mi "outboundTopic" exactamente (y obtendría todos los mensajes, etc.)?
O bien, he estado pensando que debería compartir un intermediario entre varias instancias de ServiceMix. Eso sería más claro en el sentido de que solo habría un conjunto de colas/temas para gestionar y podría escalar agregando más instancias. Pero, ahora estoy limitado a la escalabilidad de un solo corredor y estoy de vuelta en un solo punto de falla ...
Si alguien puede aclarar las concesiones para mí ... lo agradecería .
Bruce, gracias. He estado utilizando la propiedad "maxConcurrentConsumers" para enhebrar varios hilos de los consumidores de la cola de entrada. Ahora estoy tratando de dar el siguiente paso y distribuir la carga en varias máquinas. Por lo tanto, parece que podría configurar varias instancias SMX idénticas configuradas en una red de intermediarios y distribuir la carga según mis necesidades. ¿Los MessageGroups todavía proporcionan afinidad de hilos con una red de intermediarios? Además, necesito hacer que los mensajes Tópicos salientes estén disponibles para un portal ... ¿el portal tendría que conectarse a cada intermediario para obtener todos los mensajes? –
No creo que los grupos de mensajes proporcionen exclusividad en una red de intermediarios. El orden total solo funciona para un solo agente a la vez, así que creo que los grupos de mensajes son de la misma manera. Siempre que todos los mensajes se envíen al tema de salida, todos los mensajes se deben consumir, sin importar en qué intermediario se registra la suscripción. Como es un tema, también puede usar una suscripción duradera. Aunque no estoy seguro de que un único consumidor con una suscripción duradera sea una buena idea, ya que está utilizando múltiples consumidores concurrentes para extraer mensajes de la cola de entrada. – bsnyder
@bsnyder - buen resumen; ¿Dónde sugeriría que obtuviera la documentación más actualizada de ServiceMix? La documentación oficial en el sitio web está bastante desactualizada. – wulfgarpro