2012-11-15 1 views
0

Bonne journée tous,Faire un bean conduit par message écoute un sujet externe

Je suis en train de configurer un bean géré par message pour vous abonner à un sujet externe. Mon collègue et moi avons écouté avec succès le sujet avec le client JSE qui ressemble à ceci.


    public static void main(String[] args) { 
     TopicSession sess  = null; 
     TopicConnection conn  = null; 
     TopicSubscriber consumer = null; 

     Properties props = new Properties(); 
     p.put("java.naming.provider.url",   "remote://#server-name#:#server-port(4747)#"); 
     p.put("java.naming.factory.initial",  "org.jboss.naming.remote.client.InitialContextFactory"); 
     p.put("java.naming.security.principal", "#username#"); 
     p.put("java.naming.security.credentials", "#password#"); 

     InitialContext context = new InitialContext(props); 

     TopicConnectionFactory factory = (TopicConnectionFactory)context.lookup("jms/RemoteConnectionFactory"); 
     conn = factory.createTopicConnection("#username#", "#password#"); 
     conn.setClientID("#client-id#"); 

     sess = conn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); 

     Topic topic = (Topic)context.lookup("jms/topic/#topic-name#"); 
     consumer = sess.createSubscriber(topic); 
     consumer.setMessageListener(new MyTopicListener()); 

     try { 
      conn.start(); 
      // ... loop until done. 
     } finally { 
      consumer.close(); 
      sess.close(); 
      conn.close(); 
     } 
    }

Comment puis-je déplacer ceci vers une MDB? Pour ce que je sais, nous pouvons définir les paramètres destinationType, connectionFactoryJndiName, destinationJndiName, initialContextFactory avec activationConfig de l'annotation MessageDriven. Mais qu'en est-il de l'URL distante, du nom d'utilisateur et du mot de passe?

FYI, J'utilise JBoss AS 7.1.1 et c'est pour MDB 3.0.

Merci beaucoup d'avance pour toute réponse et commentaires.

Répondre

1

HornetQ dispose d'un adaptateur de ressources entrantes et sortantes. Le RA JCA entrant est utilisé pour consommer des messages par un bean géré par message (MDB). L'adaptateur de ressources peut être configuré avec des propriétés de configuration d'activation de la BMD, comme le montre l'exemple suivant:

@MessageDriven(name = "ExampleMDB", activationConfig = { 
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
    @ActivationConfigProperty(propertyName = "destination", propertyValue = "testQueue"), 
    @ActivationConfigProperty(propertyName = "connectorClassName", propertyValue ="org.hornetq.core.remoting.impl.netty.NettyConnectorFactory"), 
    @ActivationConfigProperty(propertyName = "connectionParameters", propertyValue = "host=172.168.1.137;port=5445")}) 
public class ExampleMDB implements MessageListener { 
    public void onMessage(Message recvMsg) { 
    ... 
    } 
} 

Référez-vous à la documentation HornetQ pour obtenir une liste complète des propriétés de configuration: http://docs.jboss.org/hornetq/

Questions connexes