Qu'est-ce que Java Message Service (JMS) pour?
Je suis actuellement en train d'évaluer JMS et je ne suis pas ce que je pourrais l'utiliser pour.
Actuellement, je crois que ce serait un cas d'utilisation: je veux créer un SalesInvoice PDF et l'imprimer lorsqu'une SalesOrder sort de l'Entrepôt, de sorte que lors de la Livraison, la transaction je pouvais envoyer un transactionnelles demande d'impression qui commence lorsque le SalesOrder transaction est terminée avec succès.
Maintenant j'ai trouvé la plupart JMS produits sont serveur autonome.
- Pourquoi un besoin d'un Serveur Autonome pour le Traitement des Messages, vs par exemple, certains simples inproc traitement avec du Quartz planificateur?
- Comment est-il interagir avec ma demande?
- N'est-il pas trop lent?
- Quels sont Usecases vous déjà mis en œuvre avec succès?
- Voir stackoverflow.com/questions/1035949/...
- Si vous n'avez pas l'utilité, alors il semble que votre évaluation est terminée. 😉
- POUR comprendre les concepts liés à la messagerie et des tendances JMS peut aider, tout ce que vous avez besoin est: eaipatterns.com
Vous devez vous connecter pour publier un commentaire.
JMS est un incroyablement utile du système, mais pas pour tous les usages.
Il s'agit essentiellement d'un haut niveau de cadre pour l'envoi de messages entre les nœuds, avec des options pour la découverte, la robustesse, etc.
Utile, un cas d'utilisation, c'est quand vous voulez un client et un serveur de parler à une autre, mais sans que le client en fait avoir l'adresse du serveur (E. g., vous pouvez avoir plus qu'un seul serveur). Le client n'a besoin de connaître le courtier et la file d'attente/nom du sujet, et le serveur peut se connecter en tant que bien.
JMS ajoute également de la robustesse. Par exemple, vous pouvez le configurer de sorte que si le serveur meurt alors que le client envoie des messages ou, à l'inverse, vous pouvez toujours envoyer des messages de la part du client ou de sondage des messages à partir du serveur. Si vous avez déjà essayé de mettre en œuvre directement avec les sockets c'est un cauchemar.
Le scénario que vous décrivez ressemble à une classique J2EE problème, pourquoi n'utilisez-vous pas un J2EE framework? JMS est souvent utilisé à l'intérieur de J2EE pour les communications, mais vous avez tous les autres avantages.
JMS est un standard de messagerie qui permet aux applications Java EE de créer, d'envoyer, de recevoir et de consommer des messages dans un couplage souple, fiable et asynchrone. Je vous suggère de lire le Java Message Service API Aperçu pour plus de détails.
Sûr, dans votre cas, le Quartz est une option. Mais que faire si la facture du système est un système à distance? Que faire si vous ne voulez pas attendre la réponse? Que faire si le système distant est vers le bas lorsque vous souhaitez communiquer avec elle? Que faire si le réseau n'est pas toujours disponible? C'est là que JMS est en. JMS permet d'envoyer un message assuré d'être livré et à consommer de façon transactionnelle (envoi ou la consommation d'un message peut être partie d'une transaction globale).
JMS prend en charge deux modes de communication: point-à-point et publication/abonnement (si cela répond à la question).
Les Mamans, j'ai travaillé avec étaient ultra-rapides.
Utilisée dans le système comme une demande de réservation, une banque de back-office (traitement des données de marché), ou, plus simplement, d'envoyer des e-mails.
Voir aussi
La force de JMS réside dans le fait que vous pouvez avoir plusieurs producteurs et plusieurs consommateurs pour la même file d'attente, et la JMS courtier gère la charge.
Si vous disposez de plusieurs producteurs, mais un consommateur, vous pouvez utiliser d'autres approches, comme un planificateur quartz et d'une table de base de données. Mais dès que vous avez plusieurs consommateurs, le schéma de verrouillage de devenir très dur à la conception; mieux d'aller pour déjà approuvé solution de messagerie. Voir ces autres réponses de moi pour un peu plus de détails: Pourquoi choisir JMS pour asynchrones solution ? et Producteur/consommateur du système à l'aide de la base de données
Les autres points sont tout simplement trop vague pour avoir une réponse.
Je l'ai utilisé sur un certain nombre de projets. Il peut aider avec l'évolutivité, le découplage des services, de la haute disponibilité. Voici une description de la façon dont je l'ai utilisé sur un projet il y a plusieurs années:
http://coders-log.blogspot.com/2008/12/favorite-projects-series-installment-2.html
La description explique ce que JMS mis sur la table pour ce projet en particulier, mais d'autres projets seront l'utilisation de systèmes de messagerie pour une variété de raisons.
De messagerie est généralement utilisé pour interconnecter les différents systèmes et envoyer des demandes/commandes en mode asynchrone. Un exemple courant est celui d'un client de la banque demande l'approbation d'une transaction. Le serveur est situé dans une autre banque du système. Les deux systèmes sont connectés à un Bus de Service d'Entreprise. La demande va dans le bus de messagerie, qui reconnaît instantanément la réception du message. Le client peut continuer avec le traitement. Chaque fois que le serveur est disponible, le bus transmet le message. Bien sûr, il doit y avoir un deuxième chemin d'accès pour le serveur d'informer le client que la transaction a été exécutée avec succès ou de leur échec. Cela peut être mis en œuvre avec JMS.
Veuillez noter que les deux systèmes n'ont pas besoin de mettre en œuvre JMS. On peut utiliser JMS et l'autre MSMQ. Le bus va prendre soin de l'interconnexion.
JMS est un message-oriented middleware.
Cela dépend de ce que les autres composants que vous pourriez avoir. Je suppose que. Mais je ne sais rien à propos de Quartz
Vous envoyer des messages pour le courtier.
Comparer à quoi ?
J'ai JMS utilisé pour mettre en œuvre une application SIP server, pour communiquer entre les différents composants.
De la Javadoc:
En d'autres termes, et contrairement à tous les autres de réponse ici, JMS n'est rien de plus qu'un API, qui enveloppements l'accès à des tiers Message Courtiers, via JMS Prestataires mis en œuvre par le fournisseur. Ceux Message Courtiers, tels que IBM MQ et des dizaines d'autres, ont les caractéristiques de fiabilité, de l'asynchronicité, etc. qui ont été mentionnés dans d'autres réponses. JMS lui-même fournit exactement aucun d'entre eux. C'est le Message qu'Courtiers ce JDBC est à des bases de données SQL, ou JNDI est à des serveurs LDAP (entre autres choses).
J'ai trouvé une très bonne explication de JMS avec un exemple.
Qui est une simple application de chat avec JMS files d'attente sont utilisés pour communiquer des messages entre les utilisateurs et les messages restent dans la file d'attente si le récepteur est en mode hors connexion.
Dans cet exemple de mise en œuvre, ils ont utilisé
La configuration de JBoss étape pour la file d'attente est expliqué bien
Ses disponibles à http://coder2design.com/messaging-service/
Même le code téléchargeable est également disponible.