Bonjour,
j'ai trouvé ce lien fort interessant qui indique comment faire en spring de maniere tres facile des consomations de messages JMS.
http://blog.interface21.com/main/200...-improvements/
je le recommande pour ceux (comme moi ) qui galerent un peu.
J'ai reproduit la meme chose dans mon contexte spring en ce qui concerne la partie reception de message.
cad
Classe ExampleListener
Cette classe se contente d'afficher les messages reçus.
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 package cs.workflow.jms; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; public class ExampleListener implements MessageListener { public void onMessage(Message message) { System.out.println("reception d'un message sur le topic"); if (message instanceof TextMessage) { try { System.out.println(((TextMessage)message).getText()); } catch (JMSException e) { throw new RuntimeException(e); } } else { throw new IllegalArgumentException("Message must be of type TestMessage"); } } }
Extrait de ma config spring pour parametrer le bidule :
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 <!-- JMS Connection factory (locale pour l'instant) --> <bean id="jmsconnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616" /> </bean> <!-- JMS topic des taches à charger --> <bean id="destination" class="org.apache.activemq.command.ActiveMQTopic" autowire="constructor"> <constructor-arg value="tasks" /> </bean> <!-- JMS message listener --> <bean id="messageListener" class="cs.workflow.jms.ExampleListener" /> <!-- JMS container pour le listener --> <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsconnectionFactory" /> <property name="destination" ref="destination" /> <property name="messageListener" ref="messageListener" /> </bean>
Je teste en lançant l'appli puis en parallele un serveur local activemq.
Je cree le topic et balance un message texte via la console JMX Jconsole.
Je reçois bien les messages qui arrivent.
Cependant je voudrai etre capable de recuperer et traiter les messages deja presents dans le topic AVANT le lancement de mon programme de reception traitement. Ce n'est pas le cas avec la configuration actuelle. Quelqu'un sait sur quoi jouer pour obtenir le comportement que je souhaite svp ?
Partager