Envoi de messages dans une application JMS

Pour qu'une application JMS puisse envoyer des messages à une destination, elle doit d'abord créer un objet MessageProducer pour la destination. Pour envoyer un message à la destination, l'application crée un objet Message, puis appelle la méthode send () de l'objet MessageProducer .

Une application utilise un objet MessageProducer pour envoyer des messages. Une application crée normalement un objet MessageProducer pour une destination spécifique, qui peut être une file d'attente ou une rubrique, de sorte que tous les messages envoyés à l'aide de l'expéditeur de message soient envoyés à la même destination. Par conséquent, pour qu'une application puisse créer un objet MessageProducer , elle doit d'abord créer un objet Queue ou Topic. Pour plus d'informations sur la création d'un objet de file d'attente ou de rubrique, voir les rubriques suivantes:
Pour créer un objet MessageProducer, une application utilise la méthode createProducer() d'un objet Session, comme le montre l'exemple suivant :
MessageProducer producer = session.createProducer(destination);
Le paramètre destination est un objet de file d'attente ou de rubrique que l'application a créé précédemment.
Pour qu'une application puisse envoyer un message, elle doit créer un objet Message. Le corps d'un message contient les données d'application et JMS définit cinq types de corps de message:
  • Octets
  • Mappe
  • Objet
  • Flux
  • Texte
Chaque type de corps de message possède sa propre interface JMS , qui est une sous-interface de l'interface Message, et une méthode dans l'interface Session pour créer un message avec ce type de corps. Par exemple, l'interface d'un message texte s'appelle TextMessage, et une application utilise la méthode createTextMessage( d'un objet Session pour créer un message texte, comme le montre la déclaration suivante :
TextMessage outMessage = session.createTextMessage(outString);
Pour plus d'informations sur les messages et les corps de message, voir Messages JMS.
Pour envoyer un message, une application utilise la méthode send () d'un objet MessageProducer , comme illustré dans l'exemple suivant:
producer.send(outMessage);

Une application peut utiliser la méthode send () pour envoyer des messages dans l'un ou l'autre domaine de messagerie. La nature de la destination détermine le domaine de messagerie utilisé. Cependant, TopicPublisher, la sous-interface de MessageProducer spécifique au domaine de la publication/abonnement, possède également une méthode publish(), qui peut être utilisée à la place de la méthode send(). Les deux méthodes sont fonctionnellement identiques.

Une application peut créer un objet MessageProducer sans destination spécifiée. Dans ce cas, l'application doit spécifier la destination lors de l'appel de la méthode send ().

Si une application envoie un message dans une transaction, le message n'est pas distribué à sa destination tant que la transaction n'est pas validée. Cela signifie qu'une application ne peut pas envoyer de message et recevoir une réponse au message dans la même transaction.

Une destination peut être configurée de sorte que lorsqu'une application lui envoie des messages, IBM MQ classes for JMS réachemine le message et renvoie le contrôle à l'application sans déterminer si le gestionnaire de files d'attente a reçu le message en toute sécurité. Cette opération est parfois appelée insertion asynchrone. Pour plus d'informations, voir Insertion de messages de manière asynchrone dans IBM MQ classes for JMS.