簡體   English   中英

JBoss消息傳遞和XA事務:JMS消息丟失

[英]JBoss messaging and XA transactions: JMS messages are lost

我對分布式JMS進行了一些測試,目前我遇到了以下問題。

我有兩台服務器。 第一個是帶有JBoss Messaging 1.4.3的JBoss 5.1,第二個是帶有兩個MDB的JBoss 5.1。 一個MDB將消息從隊列A路由到B.另一個是相反的 - 從B到A的路由。因此隊列A和B上的消息總和應該是常量。 只要我正確關閉服務器就可以了。

但是如果我崩潰其中一個服務器的進程(使用kill -9 ),我可以觀察到消息丟失(不是很多但是可見)。 我不明白為什么。 畢竟它似乎沒有使用XA。

我嘗試使用HSQLDB和Oracle作為JBM服務器上的持久性,但效果是一樣的。

我使用JmsXA作為ConnectionFactory

有什么想法發生了什么?

據我所知,您正在嘗試協調跨多個服務器(JVM)的XA事務,這需要您的服務器配置JTS,並且JBoss服務器通常僅默認配置為JTA。 為了確保我們在這里談論相同的版本,當我看到我的控制台登錄啟動JBoss AS 5.1時,它會報告以下JBossTS版本:

08:46:59,678 INFO [TransactionManagerService] JBossTS事務服務( JTA版本 - 標簽: JBOSSTS_4_6_1_GA_CP07

假設它與您運行的版本位於相同的附近,您應該查看此下載中提供的JBossTS文檔中包含的所有文檔: jbossts-full-4.6.1.GA.zip 具體來說,請查看標題為JBossTS 4.6.0服務器集成指南的PDF,其中包括將Arjuna事務管理器的不同個性定義為:

JBossTS由一個事務引擎ArjunaCore組成,周圍有多個“個性”。

JBossTS JTA為Java Enterprise Edition應用程序提供了一個符合JTA 1.1的事務管理器。 事務范圍僅限於單個JVM。 這適用於在JVM之間的業務方法調用上不需要事務上下文傳播的應用程序。 例如,僅使用單個應用程序服務器實例的部署或僅使用多個此類實例進行負載平衡的部署,它們之間沒有事務通信。

JBossTS JTS提供基於CORBA的分布式事務管理,可以通過JTS本機API或通過JTA接口來驅動。 它適用於事務上下文必須跨越多個JVM的情況,例如部署在應用程序服務器集群上的Java EE應用程序,或者異構Java應用程序服務器之間的事務性業務方法調用,或者編寫的Java和遺留應用程序需要互操作性的情況。另一種使用CORBA綁定的語言。

並斷言:

對於涉及多個JVM的事務用例,需要JBossTS JTS。

另請參閱有關JBoss Messaging XA配置的此附帶條款。 確保遵循標題為JBoss Messaging XA Recovery Configuration的JTA文檔中概述的配置說明。

該文檔提供了您需要做的事情的合理摘要,但是獨立JBossTS實例的安裝和配置的詳細信息在標題為JBoss Transactions 4.6.0安裝指南的文檔中,而用JTS替換AS 5.1 JTA事務服務在<jboss-home> \\ docs \\ examples \\ transactions \\ README.txt中的AS 5.1發行版本的文檔中概述了服務


說了這么多,如果有任何方法可以使用一台服務器實現您的解決方案,我懷疑您會發現最好的方法。

干杯。

//尼古拉斯

PS正確安裝JTS后,控制台日志將在啟動時顯示如下內容:

09:41:03,558 INFO [TransactionManagerService] JBossTS交易服務(** JTS版本 - 標簽:JBOSSTS_4_6_1_GA_CP07)**

經過一些研究(及時拉伸)后,我發現未正確配置XA恢復,並且無法訪問消息,因為全局事務永遠不會完成。 尼古拉斯回答了這一點,所以非常感謝。 http://docs.jboss.org/jbossmessaging/docs/userguide-1.4.0.SP3/html_single/index.html#recovery

僅啟用XA的連接工廠不保證事務性。 發送方和接收方都應聲明它們正在使用事務,如本Java EE 6文檔中所示,該文檔涉及容器管理的事務文檔

此外,請確保您的郵件是持久發送的。 我建議事務管理器的一些跟蹤/調試日志記錄,以確保您的事務在應該的時候正確提交。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM