Bonjour à tous,

j'ai créé un EJB de type Message driven bean (MDB) qui récupère les messages d'un topic JMS.

Mon EJB se présente de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/**
 * Message-Driven Bean implementation class for: LaunchJob
 *
 */
	@MessageDriven(
	activationConfig={
	@ActivationConfigProperty(propertyName="destinationType",propertyValue="javax.jms.Topic"),
	@ActivationConfigProperty(propertyName="destination",propertyValue="topic/Talend_Job"),
	@ActivationConfigProperty(propertyName="maxSession", propertyValue="1")
	}
	)
 
@TransactionManagement(TransactionManagementType.BEAN)
public class LaunchJob implements MessageListener {
 
    /**
     * Default constructor. 
     */
    public LaunchJob() {
        // TODO Auto-generated constructor stub
    }
 
	/**
     * @see MessageListener#onMessage(Message)
     */
	public void onMessage(Message LeMessage) {
		TextMessage msg = null;
		try {
			if(LeMessage instanceof TextMessage){
				msg = (TextMessage) LeMessage;
				//Réception du job.
				//Il faut donc désormais exécuter le job demandé.
				//System.out.println(msg.getText());
				String message = msg.getText();
 
			}
			else {
				System.out.println("Mauvais type de message : "+LeMessage.getClass().getName());
			}
		}
		catch(Exception e) {
			e.printStackTrace();
		}
    }
Tout fonctionne parfaitement. J'arrive bien à effectuer le traitement. L'EJB est déployé sous JBoss.
Désormais je dois faire en sorte que cet EJB soit capable d'écouter sur plusieurs topic JMS différent tout en conservant la contrainte de ne traiter qu'un message à la fois par topic.

Quels solutions s'offrent à moi ?
Dois-je créer plusieurs instances de cet EJB en déclarant un nom de topic différent à chaque fois ? Si c'est le cas ai-je la possibilité de déclarer le nom de topic au travers d'un fichier XML et non de "@ActivationConfigProperty(propertyName="destination",propertyValue="topic/Talend_Job")," ?

Sinon et là ce serait vraiment un très bonne chose, ai-je la possibilité de répondre à mon besoin au travers d'un seul EJB ?

Si vous avez besoin de plus de précisions, n'hésitez pas à me contacter.

Merci beaucoup par avance,
Christophe