J'essaye de déterminer mes options pour grouper mon application ServiceMix 3.3.1/Camel 2.1/AMQ 5.3. J'effectue un traitement des messages à volume élevé et j'ai besoin de cluster pour une haute disponibilité et une évolutivité horizontale.Apache Camel avec le clustering ActiveMQ
Voici essentiellement ce que fait ma demande ... de type HTTP> sur file d'attente> DES PROCEDES> Database-> SUJET
de ("jetée: http://0.0.0.0/inbound ") .à (" ActiveMQ: inboundQueue");
de ("ActiveMQ: inboundQueue maxConcurrentConsumers = 50") poids.Procédé (decode()) poids.Procédé (transform()) poids.Procédé (valider()) poids.Procédé (SaveToDatabase()) . à ("activemq: topic: ouboundTopic");
Alors, je l'ai lu toutes les pages de regroupement ServiceMix et AcitveMQ, mais je ne suis toujours pas sûr de chemin à parcourir.
Je sais que je peux utiliser une configuration maître/esclave pour HA, mais cela ne suffit pas avec l'évolutivité. J'ai lu sur le réseau de courtiers, mais je ne suis pas sûr de savoir comment cela s'applique. Par exemple, si je déploie des routes Camel identiques sur plusieurs nœuds d'un cluster, comment vont-ils interagir exactement? Si je pointe mon producteur HTTP sur un nœud (NodeA), quels messages seront envoyés à NodeB? Les files d'attente/sujets seront-ils partagés entre les nœuds A/B ... si oui, comment les messages sont-ils partagés ou dupliqués? De même, comment un client externe peut-il s'abonner à mon "outboundTopic" exactement (et recevoir tous les messages, etc.)?
Sinon, j'ai pensé que je devrais partager un courtier entre plusieurs instances de ServiceMix. Ce serait plus propre, car il n'y aurait qu'un seul ensemble de files d'attente/sujets à gérer et je pourrais redimensionner en ajoutant plus d'instances. Mais, maintenant je suis limité à l'évolutivité d'un courtier unique et je suis de retour à un seul point de défaillance ...
Si quelqu'un peut clarifier les compromis pour moi ... J'apprécierais .
Bruce, merci. J'ai utilisé la propriété "maxConcurrentConsumers" pour multi-thread les consommateurs de la file d'attente entrante. Maintenant, j'essaie de passer à l'étape suivante et de répartir la charge sur plusieurs machines. Ainsi, il me semble que je pourrais juste installer plusieurs instances SMX identiques configurées dans un réseau de courtiers et qui distribueraient la charge pour mes besoins. Est-ce que MessageGroup fournit toujours l'affinité de thread avec un réseau de courtiers? En outre, je dois rendre les messages outboundTopic disponibles pour un portail ... le portail doit-il se connecter à chaque courtier pour recevoir tous les messages? –
Je ne crois pas que les groupes de messages offriront l'exclusivité dans un réseau de courtiers. La commande totale ne fonctionne que pour un seul courtier à la fois, donc je pense que les groupes de messages sont les mêmes. Tant que tous les messages sont envoyés au sujet sortant, tous les messages doivent être consommés, quel que soit le courtier dans lequel l'abonnement est enregistré. Comme c'est un sujet, vous pouvez aussi utiliser un abonnement durable. Bien que je ne suis pas sûr qu'un seul consommateur avec un abonnement durable est une bonne idée puisque vous utilisez plusieurs consommateurs simultanés pour tirer des messages de la file d'attente entrante. – bsnyder
@bsnyder - bon résumé; Où suggéreriez-vous que je reçoive la documentation ServiceMix la plus à jour? La documentation officielle sur le site est assez périmée. – wulfgarpro