2012-07-23 136 views
2

如何實現異步JMS應用程序?是否有必要更改服務器程序或只是我應該更改客戶端代碼? 我想知道如何將同步JMS消息更改爲異步?異步JMS消息

+0

JMS本質上是異步的,我不明白你,你是程序員嗎? – Raman 2012-07-23 06:25:02

+0

不,我剛剛在j2ee中搜索了異步方法,當我熟悉jms時,我發現客戶端可以異步接收來自服務器的消息。我想知道我該怎麼做? – Azad 2012-07-23 06:33:07

回答

2

很簡單。您需要爲消費者分配消息偵聽器以異步接收消息。

consumer.setMessageListener(new MessageListener). 

谷歌搜索將爲您提供一些樣本。

+0

也不要忘記MDBs – Raman 2012-07-23 09:59:21

1

Java EE中的消息驅動Bean是異步的。自然地。一個簡單的MDB看起來是這樣的:

@MessageDriven(mappedName = "jms/MyQueue") // JNDI name for a specific Destination (queue or topic) 
public class MyMDB implements MessageListener{ 
    public void onMessage(Message msg){ 
    // handle it async. 

    } 
} 

否則,在普通的Java/JMS,它幾乎一樣簡單,同樣的代碼,但不是在@MessageDriven註釋,一些初始化代碼有許多工作要做,以獲得JMS消費者啓動並運行。當然,標準的JMS設置程序也必須完成,例如獲取連接工廠,創建連接和查找目標。

public class MyConsumer implements MessageListener{ 


    public void init(Connection conn, Destination dest){ 
    // connection and destination from JNDI, or some other method. 
    Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); 
    MessageConsumer cons = sess.createConsumer(dest); 
    cons.setMessageListener(this); 
    conn.start(); 
    } 

    @Override 
    public void onMessage(Message msg) { 
    // Do whatever with message 

    } 
}