Quelle est la différence entre ActivationSpec et ConnectionFactory?
Ma compréhension est que:
- MDBs (Message Driven Beans) se connecter via l'Activation de la Spécification.
- MDPs (par Message POJO) connecter via la Connexion de l'Usine.
Ce diagramme à partir d'IBM est utile:
Pour moi, cette explication d'IBM ne pas jeter beaucoup de lumière sur la différence:
- Usine de raccordement -- utilisé par l'application pour obtenir des connexions au bus de messagerie.
- File d'attente -- utilisé par l'application pour envoyer et recevoir des messages.
- Spécifications d'Activation de -- utilisé par l'application de message-driven bean pour se connecter à la file d'attente de messages et d'en recevoir.
Un réel la différence que j'ai trouvé est que:
Session, les haricots et les haricots d'entité [aka MDPs] vous permettent d'envoyer des messages JMS et à
recevoir de façon synchrone, mais pas de manière asynchrone. Pour éviter d'encombrer
ressources de serveur, vous pouvez choisir de ne pas utiliser le blocage synchrone
reçoit dans un composant côté serveur. De recevoir des messages
en mode asynchrone, utilisation d'un message-driven bean [BMD].
Donc la belle petite liste que j'ai jusqu'à présent est:
- Utilisation ActivationSpec avec un MDB et ConnectionFactory avec un POJO (mais attendez, peut Pojo utilisation ActivationSpec trop ?)
- MDB fonctionner de manière asynchrone. MBP fonctionnent de manière synchrone.
Ma question est: existe-il d'autres différences? Pouvez-vous préciser la différence ?
Références:
- Le déploiement de message-driven beans et les applications JMS dans l'Intégration des Services de Bus
- Printemps JMS vs MDB
source d'informationauteur Jeff K.
Vous devez vous connecter pour publier un commentaire.
@Jeffrey Chevalier: Permettez-moi d'essayer de clarifier basé sur mon expérience.
Nous comprenons MDB sont les haricots de consommer les messages entrants. Maintenant, il est nécessaire de spécifier quel type de messages, à partir de laquelle la destination d'un particulier MDB veut consommer.
MDB est fondamentalement un message de fin.
Avant JCA conforme banques multilatérales de développement:
flux dans websphere :-
Donc généralement un développeur de créer une MDB et spécifier la destination du message de détails dans ejb-jar.xml comme suit:-
et un deployer devez créer port d'écoute et d'associer déployé MDB pour le port d'écoute. QueueConnectionFactory spécifié ci-dessus est faite pour créer des connexions à la file d'attente.
Post JCA conforme banques multilatérales de développement:
Post JCA, MDB est traité comme un JCA ressource. JCA spécification constituée de messagerie cadre Api. Flux en cas de JCA est:-
Maintenant depuis JCA a été créé pour travailler avec n'importe quel type de ressource être il JDBC, JMS, l'EIE, etc, de sorte qu'il a un générique d'Activation "Spec" façon de créer des configurations pour n'importe quel adaptateur. Dans ra.xml fichier, il est mentionné ce type d'activation spec est nécessaire en particulier de l'adaptateur de travail. Activation de la spec n'est pas une entité d'exécution, c'est juste un détails de configuration utilisé par l'adaptateur de ressources. Dans le cas ci-dessus JCA adaptateur pour utiliser la connexion de la file d'attente de connexion usine mentionné dans l'activation de la spec. Donc, fondamentalement, la file d'attente de connexion de l'usine dans les deux cas ci-dessus sont les mêmes.
En cas de websphere, vous pouvez utiliser SIB (Intégration du Service Bus), des destinations pour la messagerie externe OU un logiciel comme websphere MQ pour la messagerie.
En cas de SIB destinations pour la messagerie :-
SIB a mis en place un JCA adaptateur de ressources. Donc MDB à l'aide de la destination sur le SIB pouvez utiliser l'activation de spec pour spécifier les détails de destination. et des ressources de l'adaptateur de module peuvent interagir avec le moteur de messagerie et peut livrer les messages de MDB.
Dans le cas de la messagerie externe cadre comme websphere MQ:-
Depuis websphere MQ n'a pas mis en œuvre de JCA carte, donc nous avons besoin de configurer le port d'écoute pour se connecter à des destinations résidant sur websphere MQ. Il est le port d'écoute qui va livrer des messages à MDB.
En bref, les deux cas d'utilisation de la file d'attente de connexion de l'usine pour obtenir de la file d'attente de connexion. Dans un cas, c'est l'adaptateur de ressources (avec les informations de configuration en forme de l'activation spec) pour diffuser des messages où, comme dans d'autres cas, c'est le port d'écoute (lié à la file d'attente & usine) pour diffuser des messages.
J'espère que cela clarifie maintenant.
Ils sont tous les deux configurations, mais la fabrique de connexion est utilisé pour les messages sortants et les spécifications d'activation est utilisé pour les messages entrants de messagerie.
C'est ce que j'ai reçu de IBM.
Le client d'un ConnectionFactory est l'application. L'application utilise la ConnectionFactory de pousser/tirer des messages vers/à partir du moteur de messagerie via une File d'attente.
Le client d'un ActivationSpec est le conteneur d'EJB. Le conteneur d'EJB obtient un ActivationSpec pour enregistrer un MessageEndpointFactory pour le MDB ou MDP avec un ResourceAdapter. Lorsqu'un client pousse un message pour le moteur de messagerie, la messagerie, le moteur de l'utilisation de l'enregistrés MessageEndpointFactory pour transférer le message à l'application (par exemple, le MDB ou MDP). Cela permet à l'application "asynchrone" recevoir des messages, plutôt que d'obliger le client à interroger ou bloc d'essayer de tirer un message de la File d'attente.