Envoyer un message à une distance de file d'attente JMS à l'aide de JBoss
Cela a l'air simple mais je ne trouve pas de réponse simple.
Je veux ouvrir une connexion à une distance de JMS courtier (adresse IP et le port sont connus), ouvrez une session à une file d'attente spécifique (nom) et de poster un message sur cette file d'attente.
Est-il un simple API Java standard (si possible) de le faire ?
MODIFIER
Ok, je comprends maintenant que JMS est un pilote spec comme JDBC et pas un protocole de communication, comme je le pensais.
Donné que je suis en cours d'exécution dans JBoss, je ne comprends toujours pas comment créer un JBossConnectionFactory.
MODIFIER
En fait, je donne le problème de certaines pensées (hmmm) et si JMS doit être traité de la même façon que JDBC, puis-je utiliser un client fourni par mon MQ mise en œuvre. Puisque nous sommes à l'aide de SonicMQ pour notre courtier, j'ai décidé d'intégrer l'sonic_Client.jar bibliothèque fournie avec SonicMQ.
C'est de travailler dans une application Java autonome et dans notre service JBoss.
Merci pour l'aide
OriginalL'auteur Vincent Robert | 2009-06-24
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin d'utiliser JMS, créer un
QueueConnectionFactory
et aller de là. Exactement comment vous créer leQueueConnectionFactory
sera spécifique au fabricant (JMS est en fait un pilote de spécifications pour les files d'attente de messages comme JDBC est pour les bases de données), mais sur IBM MQ quelque chose comme ceci:MODIFIER (question suivante edit)
Le meilleur moyen d'accéder à une file d'attente à distance, ou une file d'attente pour que la matière, est d'ajouter un
Queue
exemple, le registre JNDI. À distance pour les files d'attente de ce résultat est obtenu à l'aide de MBeans qui ajoutent de laQueue
exemple lorsque le serveur démarre.Prendre un coup d'oeil à http://www.jboss.org/community/wiki/UsingWebSphereMQSeriesWithJBossASPart4, alors que c'est un exemple avec IBM MQ, est essentiellement ce que vous avez à faire pour se connecter à toute la file d'attente distante.
Si vous regardez
jbossmq-destinations-service.xml
etorg.jboss.mq.server.jmx
vous verrez les MBeans vous devez créer par rapport à un JBoss file d'attente.OriginalL'auteur Nick Holt
Voici le code que nous avons utilisé pour se connecter à la SonicMQ courtier à l'aide de la
sonic_Client.jar
bibliothèque:Merci Nick, je comprends l'avantage d'utiliser JNDI. Mais cette tâche est vraiment mineur dans notre serveur d'application, et nous avons d'abord n'a pas de plan de plus d'une demi-journée pour le créer. J'ai tort de JMS serait plus simple. Comme nous l'avons déjà passé 2 jours sur celui-ci et peut-être plus si nous étudions JNDI, je suis heureux avec cette solution de travail. Encore une fois, merci pour les conseils, nous allons étudier cette question après la livraison de la version que nous travaillons sur la droite maintenant.
Peut-être que c'était juste quelques exemple simplifié, mais pourquoi ne pas utiliser un try-finally bloc?
OriginalL'auteur Vincent Robert
En fait, je suis à l'aide de JBoss 4 et JNDI n'est pas difficile à utiliser.
Tout d'abord, vous devez savoir où votre JNDI est en cours d'exécution.
Dans mon JBoss (conf\jboss-service.xml) j'ai:
Ce qui est important, c'est le port que vous souhaitez vous connecter.
Maintenant, vous pouvez facilement vous connecter à JNDI à l'aide de ce code:
Maintenant, quand vous avez contexte, il est très similaire à @Nick Holt réponse, sauf la connexion de l'usine de la création, vous devez utiliser:
Aussi, vous n'avez pas besoin de créer une file d'attente si il y a déployé quelque
Tout le code ci-dessus a été testé avec JBoss 4.2.2 GA et JBossMQ (JBossMQ était, si je suis correct, remplacé dans la section 4.2.3 avec JBoss messaging).
OriginalL'auteur Betlista