2010-07-14 3 views
2

J'utilise l'écouteur de messages Spring Session Aware pour écouter plusieurs files d'attente JMS. Est-il possible d'obtenir le nom JNDI de la source d'un message entrant? J'ai essayé d'utiliser getJMSDestination, mais cela ne me donne que le nom d'affichage.Comment puis-je obtenir le nom jndi de la source d'un message jms?

Merci.

+0

Si vous envoyez tous les messages, vous pouvez ajouter le nom JNDI (ou un autre identificateur de source) au message lui-même. – DwB

Répondre

0

Je ne pense pas que vous le pouvez. La source peut même ne pas avoir un nom JNDI - si, par exemple, le message est envoyé à partir de la console du fournisseur de messagerie, ou à partir du printemps (plutôt que d'un serveur d'application).

Je pense que le message ne contient aucune information sur l'expéditeur, sauf s'il l'inclut manuellement sous la forme de propriétés.

Mise à jour: La même chose vaut pour les destinations: elles sont identifiées de manière unique par le nom du fournisseur de messagerie, qui peut de nouveau ne pas avoir de nom JNDI. Par exemple, j'utilise maintenant ActiveMQ avec Spring, et il n'y a aucun nom JNDI. Le nom JNDI est le nom par lequel le client fait référence à une certaine rubrique/file d'attente dans son conteneur et n'est pas une information stockée dans le message JMS.

+0

Je pense que la question était de savoir laquelle de plusieurs files d'attente le message est arrivé, pas d'où le message a pris naissance. Ainsi, un écouteur sur plusieurs files d'attente reçoit un message, sur quelle file d'attente est-il arrivé? OP peut obtenir le nom du fournisseur de transport pour la file d'attente avec getJMSDestination, mais ne peut pas obtenir le nom JNDI qui représente la file d'attente. –

+0

@ T.Rob merci, j'ai ajouté une mise à jour – Bozho

Questions connexes