隊列式交易處理 直接交易過程是同步的,起初交易創建者被阻塞直到交易管理器開始運行為止。不幸的是,交易的客戶端或是服務端通信有時候會失敗。有時候,有些交易的請求等級有很高,需要優先處理。這種同步交易處理模式無法很好的處理這些情況。這導致了使用隊列的異步交易處理模式的發展。隊列是一種交易資源,隊列上的操作包括入隊和出隊。在J2EE平臺定義了兩種機制處理隊列。一種是使用原生JMS API,另一種是利用消息Bean,它被定義在EJB2.0中。 交易中的JMS API 應用組件的開發者不應該在單一交易里使用JMS請求-應答范例。直到交易被提交,一個JMS消息不會被投遞給它的最終目標,在同一個交易里應答的接受決不會發生。因為一個容器管理著一個代表bean的JMS會話的交易。createQueuesession(boolen transacted, int acknowledgeMode)和createTopsession(booleantransacted, int acknowledgeMode)方法的參數被忽略。我們建議組件開發者指定一個被處理過的會話提供0作為acknowledgement的值。記住JMS的acknowledge()方法無論是在一個交易里還是在一個沒有指明的交易上下文都不該使用,這一點很重要。在一個未確定的交易上下文消息的確認是通過帶有JMS AUTO_ACKNOWLEDGE符號的容器來處理的。