J'utilise Spring 4.3.3 et j'essaie d'écouter un message où le type de destination est sujet.Comment utiliser @JmsListener pour le sujet dans Spring 4
je peux obtenir en xml:
<jms:listener-container connection-factory="connectionFactory"
destination-type="topic"
message-converter="jackson2MessageConverter">
<jms:listener destination="test.topic" ref="jmsTopicMessageListener1" method="receiveMessage"/>
<jms:listener destination="test.topic" ref="jmsTopicMessageListener2" method="receiveMessage"/>
</jms:listener-container>
Mais je veux utiliser @JmsListener. au moment où il ne fonctionne que pour comme destination de file d'attente ceci:
@JmsListener(destination = "mailbox", containerFactory = "jmsListenerContainerFactory")
public void receiveMessage(DataObject dataObject) {
System.out.println("Received <" + dataObject.getName() + ">");
}
Comment puis-je écouter un sujet avec cette @JmsListener d'annotation?
Merci d'avance.
MISE À JOUR:
Je l'ai essayé dans la config:
<bean id="topicJmsListenerContainerFactory"
class="org.springframework.jms.config.DefaultJmsListenerContainerFactory">
<property name="connectionFactory" ref="cachingConnectionFactory"/>
<property name="destinationResolver" ref="jmsDestResolver"/>
<property name="concurrency" value="3-10"/>
<property name="messageConverter" ref="jackson2MessageConverter"/>
<property name="pubSubDomain" value="true"/>
</bean>
alors ceci:
@JmsListener(destination = "test.topic", containerFactory = "topicJmsListenerContainerFactory")
public void receiveMessage(DataObject dataObject) {
System.out.println("Received <" + dataObject.getName() + ">" + 1);
}
Je peux obtenir les valeurs maintenant, mais j'obtenir des doublons.
Merci pour la bonne explication. en passant, comment puis-je changer de sujet virtuel? – Ikthiander
Cela dépend de votre configuration actuelle. Courtier intégré/autonome, sujets préconfigurés ou à la volée, etc ... Lisez-les un peu ici: http://activemq.apache.org/virtual-destinations.html Les mettre en place est assez facile, surtout repose simplement sur une convention de nommage de base. –