2 votes

files d'attente multiples dans une annotation EJB pilotée par messages

J'ai 3 files d'attente et ces trois files d'attente doivent être écoutées par MDBbean et, en fonction de la lecture des entrées, je vais répartir la tâche pour chaque catégorie d'entrée.

Pour l'instant, le code fonctionne bien pour une seule file d'attente et je ne sais pas comment l'implémenter pour plus d'une file d'attente. Pourriez-vous me guider ?

@MessageDriven(mappedName="receiver1")

classe publique MDBMessages implements MessageListener

Comment puis-je faire en sorte que mon MDBMessage écoute les files d'attente du récepteur 2 et du récepteur 3 ?

Merci Prabhakar

2voto

Nayan Wadekar Points 5580

De la documentation :

Un bean orienté message est défini pour un type de messagerie unique, conformément à l'interface d'écoute de messages qu'il qu'il utilise.

Il ne sera donc pas possible de mapper une MDB pour plusieurs types de destination.

Je n'ai pas essayé, mais vous pouvez essayer de configurer MDB dans ejb-jar.xml avec différents noms JNDI pointant vers la même classe et ajouter une destination différente à chacun d'eux. Si la configuration fonctionne, MDBMessages sera en mesure d'écouter les messages de toutes les files d'attente spécifiées dans le fichier xml.

0voto

Laures Points 1510

Utilisez le descripteur de déploiement pour créer plusieurs instances de votre mdb. Chaque instance écoute une file d'attente.

Il existe également des brokers (comme activeMQ) qui permettent à un mdb d'écouter plusieurs destinations du même type (file d'attente, sujet), s'ils utilisent l'adaptateur de ressources activemq.

0voto

@Consumer(activationConfig = { @ActivationConfigProperty(
propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@**ActivationConfigProperty(propertyName = "destination",
propertyValue = "queue/MyTasksProcess"),**

public class MyProcessorMDBean implements Downloader {

public void processSomething(Serializable anyParameter){
//Do the actual processing
}

pour un bean à message donné, vous pouvez acheminer votre message vers une seule file d'attente et donc utiliser un seul type de destination dans votre classe de bean.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X