2 votes

Clients JMS simples sur OS X

Je n'ai pas touché au matériel J2EE depuis des années et j'ai besoin de créer rapidement un client JMS pour une démo. J'utilise Eclipse, sur OS X et je ne peux même pas commencer car je n'arrive pas à trouver comment obtenir les bibliothèques nécessaires.

Il s'agit d'une simple application autonome (qui ne fonctionne pas dans un conteneur) qui extrait les messages d'un sujet.

2voto

Jherico Points 12554

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X