我將Oracle 11g用於我的數據庫,並將其Oracle Streams AQ功能用作JMS實現。使用Oracle Streams AQ在Spring MDB中共享JMS和Hibernate事務?
對於我所知道的,應該可以實現基於Spring的消息驅動的POJO(MDP),它使用相同的數據源來處理事務性數據訪問和JMS事務 - 所有這些都沒有XA事務(IIRC,this作爲SpringSource Advanced Pack for Oracle的一個功能銷售)。
這可能使用Hibernate嗎?理想情況下,我的MDP將啓動JMS事務並從隊列中讀取消息,然後通過Hibernate重新使用該事務進行數據訪問。如果出現任何問題,JMS和數據庫事務都將被回滾,而不使用兩階段提交(2PC)。
我不是一個交易大師,所以在我開始深入挖掘之前,誰能證實這是可能的,並且合理嗎?
更新:
我要的是Shared Transaction Resource pattern的實現。 sample code演示了它對於ActiveMQ和JDBC,但我需要使用Oracle Streams AQ和Hibernate。
UPDATE2: SpringSource的高級包甲骨文一直open sourced如春的數據JDBC的一部分,它「提供了使用本地事務經理都 數據庫和郵件訪問的選項,而不訴諸昂貴金紅利2交易管理「階段提交 。
+1。然而,我想知道「沒有XA-Transactions(IIRC,這是作爲SpringSource Advanced Pack for Oracle的一個特性銷售)」的聲明。我非常肯定跨越多個節點的任何事務(例如JMS和DA)都必須是XA事務,並且必須使用2PC--儘管這通常是由場景後面的容器完成的,但仍然完成。我錯了嗎?是否有一些新的令人驚歎的技術,以某種方式使其不必要? – ChssPly76 2009-08-04 01:07:14