介紹
在這一節中,我們將介紹 JMS 客戶機編程的每一個重要 JMS 公用接口和它們的一些方法。一定要記住,儘管公用接口是獨立於域的,但是客戶機代碼的行爲與運行時處於操作狀態的域的特定於域的行爲是相匹配的。
在下一節(用公用接口進行客戶機編程),我們將分析幾個進行 JMS 消息處理的示例代碼。
ConnectionFactory
ConnectionFactory
是一個可以從JNDI檢索的受管理對象,它建立了到提供者的連接。它包含 createConnection()
方法,該方法返回了一個 Connection
對象。
Connection
Connection
封裝了一個連接到提供者的活動連接。它的一些方法包括: Session
createSession(boolean, int)
:返回一個Session
對象。boolean
參數指出Session
是否被處理,int
則指出確認模式(請參閱 確認)。start()
:激活提供者發送消息。stop()
:臨時停止消息的發送,可以用start()
重新開始發送。close()
:關閉到提供者的連接,並釋放以它的名義佔用的所有資源。
Session
是用來發送和接收消息的單線程的上下文。它的一些方法包括:
createProducer(Destination)
:返回一個MessageProducer
對象,向指定的Destination
發送消息。createConsumer(Destination)
:返回一個MessageConsumer
對象來接收來自指定Destination
的消息。commit()
:提交當前事務的所有使用的或者產生的消息。rollback()
:回滾當前事務所有使用的或者產生的消息。create<messagetype></messagetype>Message(...)
:一組返回<messagetype></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
MessageListener
是有一個單一方法——onMessage(Message)
——的接口,它提供了消息的異步接收和處理。
應該通過客戶機類和該類使用 setMessageListener(MessageListener)
方法傳遞給 MessageConsumer
對象的實例來實現這個接口。在消息到達目的地時,用 onMessage(Message)
將它傳遞給對象。