2011-11-11 1 views
3

J'essaie d'enrouler mon cerveau autour de JMS et ai lu sur quelques très utiles sources et examples. J'essaie maintenant de voir la «grande image» ici et de mettre toute la théorie derrière JMS dans un contexte pratique où les vraies technologies d'entreprise sont utilisées.Comment JMS se relie aux bus de service

enter image description here

Nous avons donc ici quatre éléments: (1) JMS - une API Java pour MOM, (2) ActiveMQ - l'une des nombreuses implémentations JMS, (3) EIP - une bête intrigante et mystérieuse je commence seulement à comprendre, et finalement, (4) Apache Camel, une implémentation open source de cette bête.

J'essaye maintenant de relier ces composants ensemble pour voir le JMS (et, en général, la messagerie de classe d'entreprise) dans l'action.

Je suppose que la première chose que je cherche est une définition simple et concise pour ce que sont les EIP. Ils semblent être un ensemble de modèles de conception pour la façon dont les MOM devraient se comporter, mais puisque je suis déjà flou sur le concept de la messagerie pour commencer, c'est juste une définition plus floue qui s'ajoute à une compréhension déjà floue de certains concepts assez hardcore. Même si je ne comprends pas ce que sont les EIP, je comprends que des frameworks tels que Camel, Mule et ServiceMix les implémentent et permettent aux composants côté serveur («points de terminaison») de se contacter efficacement.

Le plus important à cette question est ma compréhension de la façon dont ces quatre composants se rapportent les uns aux autres. Je pense que comprendre cela m'aidera à relier la plupart des points; Eh bien, les plus importants de toute façon.

donc dans le schéma ci-dessus, j'étiquetée les 6 relations possibles et de s'y référer ci-dessous:

  1. JMS: ActiveMQ - Je comprends ActiveMQ être une implémentation de JMS, tout comme Hibernate est une implémentation de JPA. Est-ce correct?
  2. ActiveMQ: Camel - Camel a la capacité de transmettre des messages à n'importe quelle implémentation JMS, telle qu'ActiveMQ. Dans ce cas, ActiveMQ est un point de terminaison camel. Correct?
  3. EIP: Camel - Camel est une implémentation de EIP. Comprendre ce que sont les EIP en premier lieu est également important pour ma compréhension de l'ensemble de cette configuration.
  4. EIP: JMS - Bien qu'il n'y ait peut-être pas de connexion directe entre ces deux éléments, il semble que la messagerie soit au cœur d'EIP et que JMS soit la base de Java pour la messagerie. Est-ce une évaluation juste?
  5. J'ai quitté les relations entre EIP: ActiveMQ et JMS: Camel au cas où il y aurait des «grands concepts» dont je devrais être conscient entre ces systèmes.

Toute aide pour mettre une définition simple à comprendre en EIP et pour comprendre comment tous ces composants sont liés les uns aux autres est grandement appréciée. Merci d'avance!

Répondre

2
  1. ActiveMQ est une implémentation d'un MOM. Il fournit une implémentation côté client de l'API JMS à utiliser par les langages JVM. JMS est simplement une API, mais les implémentations sont liées à tout courtier auquel elles s'adressent par un format filaire. Vous ne pouvez donc pas utiliser l'implémentation JMS ActiveMQ pour parler à WebsphereMQ, par exemple.Il existe d'autres API pour parler à ActiveMQ à partir d'autres plates-formes de langage - C/C++ via CMS, .Net via NMS. Vous pouvez aussi parler à ActiveMQ via d'autres mécanismes "non-JMS-like", tels que via le protocole STOMP qui a des bibliothèques clientes dans Ruby, Javascript et autres.
  2. Oui.
  3. Oui et non. Camel utilise le même "langage" que les EIP, donc en utilisant Camel, vous récupérez naturellement les EIP. Cela dit, les connaître vous permet de savoir ce que vous recherchez dans l'API. Je recommande Camel in Action pour obtenir une bonne compréhension des deux, et se référer au site EIP (http://www.eaipatterns.com/) quand vous voulez obtenir un peu plus d'informations.
  4. Encore une fois oui et non. Il existe un certain nombre de modèles mis en œuvre via la messagerie (JMS est seulement une saveur), mais il existe un grand nombre de modèles qui ont une application beaucoup plus large (par exemple Splitter, Aggregator). Jetez un oeil à l'index du site EIP pour avoir une idée de cela.
  5. Camel peut communiquer avec d'autres systèmes à l'aide de son composant JMS, qui utilise un fournisseur de messagerie sous-jacent prenant en charge cette API (Websphere, Sonic, OpenMQ, etc.). Il peut également parler d'autres technologies de messagerie, telles que celles qui prennent en charge l'API AMQP.

Espérons que ça aide.

+0

Génial, c'est clair et net. Merci Jake! – IAmYourFaja