Comment limiter le nombre d'instances MDB écoutant une file d'attente Jboss JMS
Je vais avoir un problème avec la configuration suivante:
Une application Java email envoyer msg à une file d'attente JMS, puis un MDB écoute de la file d'attente de réception du courrier électronique msg avec la méthode onMessage, il ouvre une connexion sur le SMTP de Gmail, envoyer l'e-mail pour SMTP et fermer la connexion. Faire cela sur tous les messages dans la file d'attente JMS.
C'est génial de travailler quand j'ai jusqu'à 5 messages dans la file d'attente en même temps. Tous les messages sont récupérés dans le même temps, en 5 différentes instances de la base de données, j'ai donc 5 simultanées de connexion au serveur SMTP de Gmail. Mais quand il n'y a plus de messages dans la file d'attente JMS, j'obtiens une erreur de connexion à partir du serveur SMTP de Gmail. Les 5 premiers messages sont envoyés correctement, mais pas le reste de la bande, de sorte que les autres messages sont perdus parce qu'ils ne sont pas dans la file d'attente de plus.
Donc ma question est, est-il possible de limiter le nombre de MDB instance qui sera à l'écoute de la file d'attente JMS? Si j'ai un maximum de 5 MDB, puis même si j'ai 1000 messages dans la file d'attente, il va juste prendre plus de temps pour vider la file d'attente, mais au moins je ne perdre aucun message.
Toute autre suggestion pour résoudre ce problème serait très apprécié.
Ici est la version de Jboss:
[Serveur] Sortie ID: JBoss [Trinity] 4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)
et la config de la base de données est de la forme suivante :
@MessageDriven(activationConfig = {
@ActivationConfigProperty( propertyName = "destinationType", propertyValue = "javax.jms.Queue" ),
@ActivationConfigProperty( propertyName = "destination", propertyValue = "queue/emailQueue")
})
Vous avez besoin de plus?
Grâce
MODIFIER 2011-02-14
Peut-être que je suis tout de mal à vouloir limiter le nombre de MDB instance. J'ai vu une config sur le nombre de JMS threads. Si je limite le nombre de fil qui va à la poste, MDB, peut-être que ça va résoudre mon problème? Sera JMS attendre jusqu'à ce qu'un MDB est disponible avant de poster des msg de nouveau? Est-il des effets secondaires? Votre mais s'il vous plaît.
Grâce
FIN MODIFIER
source d'informationauteur Alain
Vous devez vous connecter pour publier un commentaire.
Essayer un supplément de acitivation config propriété:
où someNumber est le nombre maximal d'instances que vous souhaitez.
Si JBoss 4 dispose d'une option pour limiter le cas d'un bean session sans état, une option pourrait être de déplacer le message code de traitement de cette fève, et de passer les entrants des messages JMS. (IIRC les défaillances de la fève serait également entraîner la JMS message non reconnue, de sorte qu'il serait automatiquement une nouvelle tentative).