Cours de Patrice Torguet sur JMS Rédigé par
Thomas Delaux
4/5
11.2.3 Body
TextMessage : void setText(string s)/ String getText();
ObjectMessage : void setObject(Serializable o)/Serializable getObject();
MapMessage : void setInt(String nom, int Valeur)/int getInt(String Nom); …
StreamMessage : void writeInt(int val)/int readInt(); …
On peut mettre des objets dans le stream –void writeObject(serializable o)- mais ils
ne sont pas portables.
ByteMessage : même méthodes que pour stream +
void writeBytes(Bytes[])/int readBytes(Bytes[])
Remarques :
void clearBody(); : permet de re-initialiser le message
Un message reçu est en lecture seule.
12 Sélection/Filtrage de messages
Expression de sélection donnée au consommateur lors de la création
Implémenté en SQL92
- Identifiants (noms headers/propriétés)
- Littéraux (valeurs numériques, chaînes, TRUE/FALSE)
- Connecteurs (OR, AND, NOT, (), <, >, <=, >=, <>, =, BETWEEN, IN, IS [NOT]
NULL.
On peut filtrer uniquement sur les headers et les properties.
12.1 Exemple
String selector = “JMSType=‘car’ AND (color=‘blue’ OR color=’red’) AND price IS NOT NULL”;
MessageConsummer conso = session.createConsummer(dest, selector);
13 Exemples
13.1 Exemple producteur
Context context = new InitialContext();
ConnectionFactory cf = (ConnectionFactory) context.lookup(“nomFactory”);
Destination d = (Destination) context.lookup("nomDest");
Connection c = cf.createConnection(“login”, “passwd”) ;
Session s = c.createSession (false, Session.AUTO_ACKNOWLEDGE);
MessageProducer mp = s.createProducer(d);
c.start(); // démarre la production de message
TextMessage mess = s.createTextMessage() ;
mess.setText(“message texte”);
msg.send(mess);
context.close();
c.close();
13.2 Exemple consommateur
Context context = new InitialContext();
ConnectionFactory cf = (ConnectionFactory) context.lookup(“nomFactory”);
Destination d = (Destination) context.lookup("nomDest");
Connection c = cf.createConnection(“login”, “passwd”) ;
Session s = c.createSession (true, Session.AUTO_ACKNOWLEDGE);
MessageConsumer mp = s.createConsumer(d);
c.start(); // démarre la production de message
Message mess = mc.receive() ;
if (mess instanceof TextMessage){
TextMessage txtmess = (textMessage)mess ;
System.out.println(“reception de “ + txtmess.getText());
s.commit();
}