佇列上的多個消費者
如果您想要從佇列同時進行消費,那麼您必須為每個消費者使用不同的 Session。
這是因為每個執行緒必須有一個 Session。JMS 合約規定一次只能有一個執行緒使用一個 Session - 如果您正在使用消費者,這意味著如果使用相同的 Session,則一次只能有一個消費者接收訊息。因此,如果您想要同時消費訊息,您需要為每個消費者使用不同的 Session。
然而,您需要決定要使用多少連線。在正常的網路基礎模式下,跨 Session 共用相同的連線基本上會在單個 Socket 上多工處理流量(從而降低資源使用率,但會增加同步負擔)。因此,有時需要使用更多的連線,因為通常同時使用不同的 Socket 會比使用單個 Socket 快一點。
順帶一提,在 J2EE 1.4 的 JCA 規範中,資源轉接器通常會為每個 Session 建立 1 個連線,因此兩者之間存在 1 對 1 的對應關係。