2012-11-15 37 views
0

好日子所有,做一個消息驅動bean偵聽外部話題

我想配置的消息驅動Bean訂閱外部的話題。我和我的同事一起成功地聽取了JSE客戶端的主題,看起來像這樣。


    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(); 
     } 
    }

我該如何將其移至MDB?

對於我所知道的,我們可以使用MessageDriven註釋的activationConfig來設置destinationType,connectionFactoryJndiName,destinationJndiName,initialContextFactory。但是,遠程URL,用戶名和密碼怎麼樣?

僅供參考,我使用JBoss AS 7.1.1,這是MDB 3.0。

非常感謝您的任何答覆和評論。

回答

1

HornetQ的具有入站和出站資源適配器。入站JCA RA用於消息驅動bean(MDB)消費消息。資源適配器可以與MDB的激活配置屬性來配置,如下面的例子:

@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) { 
    ... 
    } 
} 

參考HornetQ的文檔配置屬性的完整列表:http://docs.jboss.org/hornetq/