Bonjour à tous,


Sous Oracle, il est possible de définir une rule dans un subscriber pour ne recevoir que les messages vérifiant cette rule.

Un exemple pour des messages devant vérifier la user JMS property PAYS=FRANCE :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
DECLARE 
   subscriber          sys.aq$_agent; 
BEGIN 
   subscriber := sys.aq$_agent('MON_SUBSCRIBER', null, null); 
   DBMS_AQADM.ADD_SUBSCRIBER(
      queue_name         => 'MA_QUEUE', 
      subscriber         =>  subscriber,
      rule => 'user_data.get_string_property('PAYS') = 'FRANCE'');
END;
/
Est-il possible de coder cette même rule en Java ???

Actuellement mon code ressemble à ceci (et reçoit donc tous les messages) :
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
        Topic topic = null;
        TopicSession tSess = null;
        TopicConnectionFactory tFact = null;
        TopicConnection tConn = null;
        TopicSubscriber tSub;
 
        try {
            tFact = AQjmsFactory.getTopicConnectionFactory(myURL, null);
 
            tConn = tFact.createTopicConnection("OAQ_USER","OAQ_PWD");
 
            tSess = tConn.createTopicSession(true, Session.CLIENT_ACKNOWLEDGE);
 
            topic = ((AQjmsSession)tSess).createTopic(queueName);
 
            tSub = tSess.createDurableSubscriber(topic, SUBSCRIBER_NAME);
 
            tConn.start();
 
            ((AQjmsDestination)topic).start(tSess, true, true);
 
            Message msg = tSub.receive();
 
            ...
Autre question : en Java, est-on toujours obligé de créer un subscriber ou peut-on en récupérer un existant en se basant sur son nom, par exemple ?

Merci d'avance