[英]What is the purpose of a JMS session?
JMS會話的目的是什么? 為什么單獨的連接不足以在發送者和接收者之間交換JMS消息?
Session對象是用於生成和使用消息的單線程上下文。 雖然它可以在Java虛擬機(JVM)之外分配提供程序資源,但它被視為輕量級JMS對象。
會話有幾個目的:
會話可以創建和服務多個消息生成者和消費者。
一個典型的用法是在同步MessageConsumer上有一個線程塊,直到消息到達為止。 然后,線程可以使用Session的MessageProducers中的一個或多個。
我有同樣的問題,這就是我在這里的原因。 在這種情況下引用Doc並不是很有幫助,因為我確信OP的問題不是關於如何使用會話,或者他們做了什么,而是為什么它們確實存在,為什么不將它們的功能與Connection結合起來。 恕我直言,這是一個元問題。
松散地說Sessions本質上是一個線程的連接視圖,這是JMS規范在訪問后者時關於線程和Session之間關系的說法。
可以使用會話或其創建的任何對象的線程數沒有限制。 限制是多個線程不應同時使用會話的資源。 用戶應確保滿足此並發限制。 最簡單的方法是使用一個線程。 在異步傳送的情況下,使用一個線程在停止模式下進行設置,然后啟動異步傳送。 在更復雜的情況下,用戶必須提供顯式同步。
從消息傳遞的角度來看,它們具有邏輯工作單元。 這也是交易與Sessions結合的原因。
話雖如此,連接和會話之間通常會有1:1的映射。 這就是我認為JMSContext在2.0中引入的原因。 簡化事情。
看看OP發布的日期,我想我差不多十年了。 :d
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.