Używam Oracle 11g dla mojej bazy danych i jej funkcji Oracle Streams AQ jako implementacji JMS.Udostępnianie transakcji JMS i hibernacji w Spring MDB przy użyciu Oracle Streams AQ?
Z tego, co wiem, powinno być możliwe wdrożenie opartego na komunikatach POJO (MDP) opartego na komunikatach, które wykorzystuje to samo źródło danych zarówno dla transakcji, jak i transakcji JMS - bez transakcji XA (IIRC, to został wprowadzony na rynek jako funkcja SpringSource Advanced Pack for Oracle).
Czy jest to również możliwe przy użyciu Hibernate? Najlepiej byłoby, gdyby mój MDP uruchamiał transakcję JMS i odczytał komunikat z kolejki, a następnie ponownie użył transakcji dla dostępu do danych przez Hibernate. Jeśli coś pójdzie nie tak, JMS i transakcja bazy danych zostaną wycofane, bez użycia zatwierdzania 2-fazowego (2PC).
Nie jestem guru transakcji, więc zanim zacznę głębiej kopać, czy ktoś może potwierdzić, że jest to możliwe i ma sens?
Aktualizacja:
Co chcę jest wdrożenie Shared Transaction Resource pattern. sample code demonstruje to dla ActiveMQ i JDBC, ale muszę użyć Oracle Streams AQ i Hibernate.
Update2: SpringSource Advanced Pack for Oracle został open sourced w ramach wiosennego danych JDBC i „zapewnia możliwość korzystania z jednego lokalnego menedżera transakcji zarówno dla bazy danych i dostępu do wiadomości, bez uciekania się do drogi rozprowadzane 2 -faza zatwierdzenia zarządzanie transakcjami ".
+1. Zastanawiam się jednak nad "wszystkimi bez Transakcji XA (IIRC, był to produkt wprowadzony na rynek jako dodatek do SpringSource Advanced Pack for Oracle)". Jestem całkiem pewny, że każda transakcja obejmująca wiele węzłów (na przykład JMS i DA) musi być transakcją XA i musi używać 2PC - podczas gdy zwykle odbywa się to za kontenerem za sceną, to jednak się robi. Czy się mylę? Czy jest jakaś nowa niesamowita technologia, która w jakiś sposób czyni to niepotrzebnym? – ChssPly76
Dzięki za komentarze. Zaktualizowałem moje pytanie po tym, jak zacząłem trochę głębiej. Jak opisano w artykule, do którego linkowałem, chciałbym całkowicie uniknąć JTA i XA. Dokumenty dla [SpringSource Advanced Pack for Oracle] (https://www.springsource.com/products/enterprise/oraclepack) (pobierz [tutaj] (http://www.springsource.com/downloads/springsource-advanced-pack -for-oracle-database-download)) również wspominają o tej parzystości (patrz ostatni akapit rozdziału 3.2, który jest zbyt długi, by tu zacytować, niestety). –
Nie ma sposobu, aby uzyskać koordynację tx między źródłami danych i JMS bez JTA. – skaffman