在這一節中,我着重介紹一下JMS1.1中的公共接口,以及該接口下的重要方法
ConnectionFactory
ConnectionFactory 是一個可以從JNDI檢索的受管理對象,它建立了到提供者的連接。它包含 createConnection() 方法,該方法返回了一個 Connection 對象。
Connection
Connection 封裝了一個連接到提供者的活動連接。它的一些方法包括:
- createSession(boolean, int):返回一個 Session 對象。boolean 參數指出 Session 是否被處理, int 則指出確認模式。
- start():激活提供者發送消息。
- stop():臨時停止消息的發送,可以用 start() 重新開始發送。
- close():關閉到提供者的連接,並釋放以它的名義佔用的所有資源。
Session
Session 是用來發送和接收消息的單線程的上下文。它的一些方法包括:
- createProducer(Destination):返回一個 MessageProducer 對象,向指定的 Destination 發送消息。
- createConsumer(Destination):返回一個 MessageConsumer 對象來接收來自指定 Destination 的消息。
- commit():提交當前事務的所有使用的或者產生的消息。
- rollback():回滾當前事務所有使用的或者產生的消息。
- create<MessageType>Message(...):一組返回 <MessageType>Message 的方法——例如,MapMessage、TextMessage 等。
Destination
Destination 封裝消息的目的地。它是一個從 JNDI 檢索的受管理對象。
MessageProducer
MessageProducer 用於發送消息。它的一些方法包括:
- send(Message):發送指示的 Message。
- setDeliveryMode(int):設置後續消息的發送模式,有效值爲 DeliveryMode.PERSISTENT 和 DeliveryMode.NON_PERSISTENT。
- setPriority(int):設置後續發送消息的優先級,有效值爲 0 到 9。
- setTimeToLive(long):設置後續發送消息失效前的持續時間,以毫秒計。
MessageConsumer
MessageConsumer 被用來接收消息。它的一些方法包括:
- receive():返回下一發到達的消息,該方法在消息可用之前會受到阻塞。
- receive(long):接收在 long 毫秒內到達的下一個消息,如果在時間限制內沒有消息到達,則該方法返回 null。
- receiveNoWait:如果有一個消息立即可用,則接收下一個消息,如果沒有消息可用,則該方法返回 null。
- setMessageListener(MessageListener):設置 MessageListener,MessageListener 對象在消息到達時接收它們,也就是異步接收
MessageListener
MessageListener 是有一個單一方法——onMessage(Message)——的接口,它提供了消息的異步接收和處理。
應該通過客戶機類和該類使用 setMessageListener(MessageListener) 方法傳遞給 MessageConsumer 對象的實例來實現這個接口。在消息到達目的地時,用 onMessage(Message) 將它傳遞給對象。
對於之上的這些接口,都是JMS1.1中的重要接口以及其下的重要方法。
針對現在程序的開發現狀,我們不可能做到發送方和接收方都要一直進行通信,換句話說,也就是接收方不一定要實時的接收消息。現在基於異步消息通訊的機制,才能適應企業級應用開發。所以,對於這些接口中真正實現的異步接口,最重要的就是MessageListener接口。