訊息用戶可在連線與階段作業的環境中接收訊息。用戶端會使用訊息用戶物件 (MessageConsumer) 接收來自特定實體目標 (在 API 中即以目標物件表示) 的訊息。
下列 3 項因素會影響代理程式傳送訊息給用戶的方式:
使用屬於同步或非同步
是否使用選擇器篩選內送的訊息
若是從主題目標使用訊息,訂閱者是否為長期訂閱者
另一個會影響訊息傳送與用戶端設計的主要因素,是用戶所需的可靠性程度。請參閱可靠的訊息傳送。
同步使用表示用戶明確請求傳送訊息並隨後使用訊息。
同步用戶可依據請求訊息的方式不同,選擇在訊息傳入前一直等待訊息 (無限期)、在指定的時間內等待訊息,或在沒有訊息可使用時立即傳回。(「已使用」表示物件可立即供用戶端使用。已順利傳送但代理程式尚未完成處理的訊息則無法立即使用。)
非同步使用表示訊息自動傳送到已為用戶註冊的訊息偵聽程式物件 (MessageListener)。當階段作業執行緒呼叫訊息偵聽程式物件的 onMessage() 方法時,用戶端即可使用該訊息。
訊息用戶可以使用訊息選擇器,使訊息服務僅傳送符合特定選取準則的訊息。您可以在建立用戶時指定此準則。
選擇器會使用類似 SQL 的語法來比對訊息特性。例如:
color = ”red’ size > 10
Java 用戶端也可以在瀏覽佇列時指定選擇器,以讓您檢視可供使用的已選取訊息。
您可以使用階段作業物件建立對主題的長期訂閱者。即使訂閱者處於非使用中的狀態,代理程式仍會保留這類訂閱者的訊息。
由於代理程式必須維護訂閱者的狀態,並在訂閱者重新啟動時繼續執行訊息傳送,因此代理程式在指定的訂閱者傳入與傳出時,都必須能夠加以識別。訂閱者的身份是由建立訂閱者的連線 ClientID 特性,以及您在建立訂閱者時所指定的訂閱者名稱建構而成。