Question

Je suis en train de ActiveMQ et Camel apprentissage, dans le but de créer un petit système prototype qui fonctionne quelque chose comme ceci:


(source: paulstovell.com )

(grand)

Quand une commande est placée dans le système de commandes, un message est envoyé à tous les abonnés (un pub / système de sous), et ils peuvent jouer leur rôle dans le traitement de l'ordre. Commandes , Expédition et Invoicing applications ont leurs propres installations ActiveMQ, de sorte que si l'un des trois systèmes sont en ligne, les autres peuvent continuer à une fonction. Quelque chose prend en charge le déplacement des messages entre le ActiveMQ installe.

Obtenir Apache Camel pour déplacer les messages d'une file d'attente à l'autre par des voies est assez facile, si elles sont sur la même instance ActiveMQ. Donc, cela fonctionne pour la gestion des files d'attente de souscription.

Le prochain défi pousse les messages d'une ActiveMQ instance à l'autre, et c'est le peu où je ne suis pas sûr ce qu'il faut regarder à côté.

  1. Peut Camel route entre les différentes installations ActiveMQ? (Je ne peux pas comprendre ce que l'URI point final JMI serait si elles sont sur des machines différentes).
  2. Je comprends ActiveMQ a magasin et les capacités avant . Est-ce ce que j'utiliser pour déplacer les messages entre les commandes et l'expédition / facturation?
  3. Ou est-ce que Apache ServiceMix est censé résoudre?
Était-ce utile?

La solution

Ceci est un asynchrone assez simple, l'application événementielle qui est bien adapté pour ActiveMQ et Camel.

En fait, vous ne déplacez pas les messages explicitement d'une ActiveMQ instance à l'autre. La façon dont il fonctionne utilise ce qui est connu comme . Dans votre cas, vous auriez trois courtiers: ActiveMQ-violet, ActiveMQ-vert et ActiveMQ bleu. ActiveMQ-violet crée un réseau de courtiers uni-directionnel avec ActiveMQ-vert et ActiveMQ bleu. Cela permet ActiveMQ-violet pour stocker et retransmission des messages à ActiveMQ-vert et ActiveMQ bleu basé sur la demande des consommateurs.

L'application Commandes accepte les commandes sur la file d'attente des commandes sur ActiveMQ-violet. L'application utilise des commandes Camel pour consommer et traiter un message pour déterminer si elle est un message de facturation ou un message d'expédition. Camel routes les messages vers soit la file d'attente de facturation ou la file d'attente d'expédition sur ActiveMQ-violet.

La demande des consommateurs vient de l'application et de facturation de l'application de livraison. La facturation utilise Camel pour consommer des messages de la file d'attente de facturation sur ActiveMQ-vert. L'application de livraison utilise Camel pour consommer des messages de la file d'attente d'expédition sur ActiveMQ bleu. En raison du réseau de courtiers et en raison de la demande des consommateurs sur la file d'attente ActiveMQ-green.invoicing et la file d'attente ActiveMQ-blue.shipping, les messages seront transmis de ActiveMQ-violet au courtier approprié et la file d'attente. Il n'y a pas besoin de explicitement acheminer des messages au courtier spécifique.

J'espère que cela répond à vos questions. Laissez-moi savoir si vous avez plus.

Bruce

Autres conseils

Hmmmm, je n'ai tâté au mieux, et non pendant un certain temps juste, mais je vais essayer et offrir quelque chose.

ActiveMQ peut acheminer entre les différentes installations et utilise simplement URIs standards à ma connaissance, donc je ne suis pas sûr de ce que le problème est là. Je pense que l'utilisation de TCP vous seriez bien. En utilisant ServiceMix (vous mentionnez plus tard) que vous souhaitez simplement spécifier un connectionFactory et indiquez ensuite les URI dans ce. Ce lien montre quelques exemples http://servicemix.apache.org/servicemix-jms -Nouvelle-endpoints.html.

Camel a un support pour Subscriber durable si c'est ce que vous étiez après ( http: // chameau. apache.org/durable-subscriber.html )? Ce modèle fera en sorte que si l'abonné est déconnecté lorsque le message est prêt, il aura lieu jusqu'à ce que l'abonné est de retour en ligne. Ceci est également pris en charge par ServiceMix (voir le lien ci-dessus et chercher « subscriptionDurable ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top