Question

J'aimerai savoir:

J'ai un scénario. Si un utilisateur ajoute un produit au système (je développe), il y a un écouteur qui envoie une notification à la base client de l'utilisateur adressant la notification d'un nouveau produit ajouté par l'utilisateur.

Je l'ai lu fil et (voir que je n'ai jamais utilisé JMS ni ThreadPool avant) Je me demandais si je devrais utiliser JMS ou ThreadPooling.

J'utilise Tomcat 5.5 et supérieur et JBoss 5 et plus (selon la société dernier recours) pour déployer mon application Web.

Si j'utilise JMS, dois-je utiliser Apache ActiveMQ ou JBoss Messaging ? Sont-ils tous les deux compatibles pour fonctionner sur les plates-formes (Tomcat et JBoss)?

Merci d'avance.

Était-ce utile?

La solution

Pour la communication entre les applications, JMS est une très bonne solution, en particulier pour les événements et les notifications. JMS permet que ces notifications être envoyées et reçues en utilisant ce qui est connu comme la messagerie asynchrone par lequel l'émetteur et le récepteur ne connaissent pas les uns des autres et aucune obligation d'être disponible en même temps.

ActiveMQ est très largement utilisé courtier de messages qui fournit des API client pour Java, C / C ++, C #, Perl, PHP, Python, Ruby et plus encore. Cela permet l'utilisation de JMS avec des applications écrites en Java et d'autres langues.

J'ai implémenté la messagerie JMS nombreuses fois pour une grande variété de situations d'affaires pour gérer les événements et les notifications. La grande majorité de ces temps, je l'ai recommandé et / ou utilisés JMS Spring peu importe ce courtier de messages est utilisé. JMS Le printemps est incroyablement facile à utiliser, extrêmement robuste et hautement évolutive. JMS Spring supprime la complexité de la création de votre propre producteurs de message et les consommateurs de messages, ce qui peut vous faire économiser une énorme quantité de temps.

Pour voir comment il est facile d'envoyer des messages à l'aide de JMS Spring, consultez un blog que j'ai écrit récemment intitulé Utilisation du printemps JmsTemplate pour envoyer des messages JMS . Je travaille aussi sur un blog à propos des messages à l'aide de JMS Spring.

Si vous avez d'autres questions, laissez-moi savoir.

Bruce

Autres conseils

J'ai eu une exigence similaire une fois, et nous avons utilisé JMS. Puis problème principal est de savoir comment traiter les erreurs parce que SMTP est en effet pas transactionnel:

  1. est-il ok si un e-mail sont perdus?
  2. est-il ok si un email est envoyé deux fois?

Nous avons décidé qu'il était préférable d'envoyer le message deux fois, et voici plus ou moins la conception que nous avions:

  1. Nous comptions sur les transactions géré par conteneur et si pour une raison quelconque l'e-mail ne peut être envoyé, nous avons décidé d'annuler la transaction JMS; le message sera rejouée ultérieurement par JMS et une nouvelle tentative d'envoyer le message a été fait.

  2. Si la transaction de livraison de messages JMS a échoué après l'e-mail a été envoyé (par exemple en raison d'un problème avec JMS), la transaction serait annulée automatiquement et le message a été rejouée plus tard. Dans ce cas, le courriel a été envoyé deux fois parce que STMP n'est pas transactionnel.

  3. Même si l'e-mail peut être envoyé (du point de vue du code), le serveur SMTP peut encore avoir des problèmes plus tard. Dans ce cas, les JMS ont été livrés et consommés, donc nous avons eu aucun moyen de savoir quel email avait été traité et comment envoyer de nouveau manuellement.

Mais nous utilisions déjà JMS. Je ne voudrais pas présenter JMS juste pour cela étant donné que l'argument principal est que JMS est transactionnel, mais SMTP est pas de toute façon.

Je pencherais pour quelque chose plus léger - peut-être avec un ThreadPool - et stocker l'état dans une base de données pour savoir quels email doivent être envoyés ou a été envoyé. S'il y a un problème, vous pouvez regarder la base de données et de prendre les décisions ad hoc.

Je sais que cette réponse est très en retard à ce dicsussion, mais je l'espère sera toujours utile pour les gens qui cherchent les informations sur l'intégration des ActiveMQ et Tomcat.

J'ai eu beaucoup de gens me demandent de l'aide des questions qu'ils ont eu l'intégration ActiveMQ et Tomcat alors j'ai décidé d'écrire quelques articles à ce sujet. Non seulement ce sujet couvert ActiveMQ action (voir chapitre 8), mais j'ai aussi publié une série d'articles sur il intitulé ActiveMQ et Tomcat: Parfait Partenaires . Espérons que les gens trouveront cela utile.

Je pencherais pour un JMS persistants (je l'ai utilisé que JMS WLS et Websphere MQ ne peut donc pas comparer AQ vs JBoss, selon offre une meilleure garantie pour la livraison). , Je songerais sérieusement à faire aussi le moteur de courrier électronique une application complètement séparée, selon la quantité que vous attendez le trafic de croître.

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