2015-12-16 4 views
0

J'ai rencontré des problèmes dans notre application où deux instances de l'application recevaient le même message même si leurs clients étaient créés à l'aide de createSharedConsumer et avaient le même nom d'abonnement. Au début, je pensais que cela pourrait être notre application ou la façon dont nous utilisions SpringJMS, donc j'ai créé un exemple d'application qui crée 3 usines de connexion. Ces usines sont ensuite utilisées pour créer le message envoyé à un sujet et deux écouteurs dans la même application (mais comme ils utilisent une fabrique de connexions et un ID de client différents, ils doivent être complètement séparés) mais les deux écouteurs reçoivent les deux connexions. le message.jms 2 abonné partagé

J'ai essayé d'exécuter ceci contre HornetQ et Tibco et obtenir le même résultat.

consommateurs de messages créés comme suit dans une classe qui implémente MessageListener

Connection connection = factory.createConnection(userName, password); 
Session session = connection.createSession(); 
MessageConsumer topicReceiver = session.createSharedConsumer(topic, SUBSCRIPTION_NAME); 
topicReceiver.setMessageListener(this); 
connection.start(); 

A tous ceux qui ont utilisé avec succès les consommateurs partagés de moi le point 2.0 JMS dans le sens de ce que je suis absent?

Répondre

0

semble que je devrais avoir RTFM. De la spécification JMS 2.0:

"Un partage abonnement non durable est identifié par un nom spécifié par le client et par l'identifiant client si elle est définie Si l'identifiant client a été défini lors de l'abonnement non durable partagée. a d'abord été créé alors un client qui souhaite par la suite de créer un consommateur sur ce non-durable abonnement partagé doivent utiliser le même identifiant client. "

par conséquent que plusieurs clients ne peuvent pas avoir le même identifiant de client que vous ne devez pas définir l'identifiant du client si vous souhaitez utiliser des abonnements partagés (durables ou non durables).