Mam proces, który obejmuje wysyłanie wiadomości JMS. Proces jest częścią transakcji. Jeśli późniejsza część transakcji nie powiedzie się, część, która jest po poprzedniej części, która wysłała wiadomość, muszę anulować wiadomość. Jedna myśl, jaką miałem, polegała na tym, że nie dało się jej odebrać przez pewien czas i jeśli potrzebuję wycofać, mógłbym odrzucić wiadomość. Brak znajomości wiadomości, nie wiem, czy pomysł jest możliwy. Czy istnieje lepszy pomysł? DziękiJMS rollback
Odpowiedz
Możesz używać JMS i JTA (Java Transaction API) razem - see here. W takim przypadku wysyłanie wiadomości JMS lub konsumpcja odebranej wiadomości faktycznie odbywa się atomowo jako część zatwierdzenia transakcji.
Co to oznacza? Jeśli transakcja nie powiedzie się lub zostanie wycofana, wiadomość "wysłana" nie zgaśnie, a wszelkie wiadomości "otrzymane" nie zostaną w rzeczywistości zużyte. Wszystko obsługiwane przez Twojego dostawcę JMS i JTA.
Musisz używać implementacji JMS obsługującej JTA. Wygląda na to, że już korzystasz z transakcji, więc może to być kwestia wykonania jakiejś konfiguracji, aby tak się stało (machając energicznie ręką ...).
Posiadam doświadczenie w tej dziedzinie (BEA WebLogic 7 w/BEA WebLogic Integration). Pracowałem jak w reklamie - "świat zewnętrzny" nie widział żadnego wpływu rzeczy JMS, których próbowałem, chyba że transakcja została pomyślnie zakończona.
Opisana przez ciebie transakcja XA. Dzięki temu transakcja może obejmować zakres wielu warstw, tj. Dostawcę JMS, bazę danych lub dowolny inny system EIS. Większość kontenerów można skonfigurować tak, aby korzystały zarówno z transakcji innych niż XA, jak i bez XA, więc sprawdź ustawienia kontenera!
Na przykład, jeśli używasz JMS z transakcjami XA, jest to możliwe.
Start Transaction
|
DB Insert
|
Send JMS Msg
|
More DB Inserts
|
Commit Transaction <- Only at this point will the database records be inserted and the JMS message sent.
XA Transakcje są dostępne tylko w pełnych kontenerach Java EE, więc transakcje XA nie są dostępne w Tomcat.
Powodzenia!
Karl
- 1. Kliknij raz rollback aplikacji
- 2. Transakcje rollback z TABLAMAMI ZABLOKOWANIA
- 3. Czy pocieszenie jms implementuje specyfikację JMS 2.0?
- 4. database/sql Tx - wykrywanie Commit lub Rollback
- 5. TFS seryjnej nie odebrać changeset rollback (y)
- 6. Do czego należy broker JMS w systemie JMS Eco?
- 7. JMS AUTO_ACKNOWLEDGE po potwierdzeniu?
- 8. JMS for Tomcat 6
- 9. Kopiowanie właściwości wiadomości JMS
- 10. Kolejka JMS jest pełna
- 11. jms serializer Wydajność wydania
- 12. Odpowiednik JMS w .Net
- 13. Odłączanie od WebLogic JMS
- 14. Plik JB TIBCO JMS
- 15. JMS QueueConnectionFactory vs ConnectionFactory
- 16. Tryb wielbłąd, JMS, CLIENT_ACKNOWLEDGE
- 17. Kolejka JMS otrzymuje wiadomość?
- 18. Spożywanie wiadomości JMS autorem node.js
- 19. Sygnalizacja wycofania z JMS MessageListener
- 20. Jak podłączyć JMS z PHP?
- 21. Liczba komunikatów w kolejce JMS
- 22. JMS Serialize @VirtualProperty nie działa
- 23. Filtrowanie wiadomości JMS według JMSCorrelationID
- 24. JMS serializator yml datetime format
- 25. Czy Magento obsługuje skrypty downgrade/rollback dla modułów?
- 26. Rollback zapytań SQL Multiple aktualizacji w MS Access
- 27. Jak podnieść wyjątek ActiveRecord :: Rollback i zwrócić wartość razem?
- 28. . NET TransactionScope i T-SQL TRAN COMMIT i ROLLBACK
- 29. Transport JMS v/s Transport MQ
- 30. Jak usunąć komunikat z kolejki JMS
uwzględniają również napowietrznych wydajności: http://stackoverflow.com/questions/12305900/performance-overhead-of-xa-data-sources-best-practices – Vadzim