Comment faire pour recevoir ce qui a été envoyé par convertAndSend?
Je suis en train de lire Printemps-Cadre de référence, le chapitre sur JMS intégration. Il y a quelques exemples pour l'envoi de messages texte et de manière asynchrone les recevoir (par les auditeurs). Et il y a aussi un exemple pour JmsTemplate
fonction convertAndSend
qui convertit l'objet donné à un message. La référence dit:
En utilisant le convertisseur, vous et votre code d'application peuvent se concentrer sur l'objet de métier qui est envoyé ou reçu via JMS et ne pas être concernées par les détails de la façon dont il est représenté comme un message de JMS.
Mais il n'y a pas d'exemple de la réception de ces messages. Ils mentionnent fonction receiveAndConvert
mais, malheureusement, il reçoit de manière synchrone.
Alors, comment suis-je la recevoir de manière asynchrone? Dois-je être conscient que lorsque je convertAndSend
un Map
, le message sera un MapMessage
, et il suffit de vérifier dans mon écouteur pour ce type de message et de le manipuler? Mais ils ont promis je ne suis pas concerné par les détails de la façon dont il est représenté comme un message de JMS.
Donc, il y a une meilleure façon?
Vous devez vous connecter pour publier un commentaire.
Tout
JmsTemplate
offre de base synchrone recevoir méthodes asynchrones réception est un ensemble beaucoup plus compliqué, et est au-delà de la portée deJmsTemplate
.Asynchrone réception de messages JMS est au Printemps, à l'aide de Auditeur De Message De Conteneurs, qui de manière asynchrone prendre des messages à partir de la destination JMS et de les transmettre à votre demande. Vous pouvez brancher un
MessageConverter
à votre message auditeur récipient au moyen d'un MessageListenerAdapter (branchez le convertisseur dans l'adaptateur, branchez votre demande de l'auditeur dans l'adaptateur, puis branchez l'adaptateur dans le port d'écoute du conteneur).Je sais, ça fait un moment depuis que cela a été demandé, mais j'ai eu le même problème, résolu et je voulais donner un code explicite exemple ici.
Voici mon
MessageListener
. Cela met en œuvre laonMessage(Message)
méthode d'intercepter les messages de façon asynchrone.Les messages sont ensuite convertis en utilisant le standard de
JsonMessageConvertor
dans mon cas, comme c'est lemessageConvertor
que j'ai branché sur monrabbitTemplate
bean.Espère que cela aide quelqu'un!
Owen