Chaque implémentation de JMS possède son propre ensemble de bibliothèques qui spécifient comment obtenir la fabrique de connexion initiale. Si vous disposez d'un serveur existant à partir duquel vous pouvez extraire des messages, vous devez examiner la documentation de ce serveur pour déterminer où trouver les bibliothèques à placer dans votre classpath et comment créer votre usine de connexion initiale. Si vous souhaitez créer un serveur pour les besoins de la démonstration, je vous recommande d'utiliser un serveur embarqué MQ actif courtier.
Une fois que vous avez votre usine de connexion, l'interrogation des messages d'un sujet est assez simple. Voici un exemple de code qui peut être appelé pour vider un sujet de ses messages actuels.
// Implementation specific code
public void drainTopic(TopicConnectionFactory factory, String topicName, String subscriberId)
// set factory properties like the server ID
Connection conn = factory.createConnection();
conn.start();
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic(topicName);
MessageConsumer consumer = session.createDurableSubscriber(topic, subscriberId);
Message message;
while (null != (message = consumer.receive(1000))) {
// do work on the message
}
conn.close();
}
Notez l'utilisation d'un abonné durable. Cela signifie que je n'ai pas à essayer de maintenir une seule connexion en permanence et à gérer les erreurs si elle tombe en panne. Mais comme l'abonnement est durable, le serveur sait qu'il doit conserver tous les messages que le sujet reçoit lorsque je ne suis pas connecté et les fournir lors de ma prochaine connexion. Ce code serait le même quel que soit le système d'exploitation hôte. La seule partie délicate est la création de la fabrique de connexion spécifique au fournisseur.