JMS 메시지를 보내는 프로세스가 있습니다. 프로세스가 트랜잭션의 일부입니다. 트랜잭션의 나중 부분이 실패한 경우, 메시지를 보낸 이전 파트 이후의 파트는 메시지를 취소해야합니다. 내가 생각한 한 가지 생각은 메시지에 일정 시간 동안 집어 들지 않아야한다는 것을 어떻게 든 설정하고, 롤백해야한다면 메시지를 취소 할 수있었습니다. 메시징을 알지 못해서, 그 아이디어가 가능한지 나는 모른다. 또는 더 좋은 아이디어가 있습니까? 감사합니다.JMS 롤백
Q
JMS 롤백
7
A
답변
7
JMS와 JTA (Java Transaction API)를 함께 사용할 수 있습니다 (see here). 이를 수행 할 때 JMS 메시지의 전송 또는 수신 된 메시지의 소비는 실제로 트랜잭션 커밋의 일부로서 원자 적으로 발생합니다.
이것은 무엇을 의미합니까? 트랜잭션이 실패하거나 롤백되면 "보낸"메시지가 꺼지지 않고 "수신 된"메시지가 실제로 소비되지 않습니다. 모두 JMS 및 JTA 공급자가 처리합니다.
JTA를 지원하는 JMS 구현을 사용해야합니다. 이미 거래를 사용하고있는 것처럼 들리므로 일부 구성을 수행하여 문제를 해결할 수 있습니다 (손을 적극적으로 흔들며 ...).
나는 이것을 사용해 본 경험이있다. (BEA WebLogic 7 (BEA WebLogic Integration 포함)). 광고 된대로 작업 - "외부 세계"는 트랜잭션이 성공적으로 커밋되지 않은 한 JMS에 영향을주지 않았습니다.
8
설명하신 내용은 XA 트랜잭션입니다. 이를 통해 트랜잭션은 여러 계층, 즉 JMS 제공자, DB 또는 다른 EIS의 범위를 지정할 수 있습니다. 대부분의 컨테이너는 비 XA 및 비 XA 트랜잭션을 모두 사용하도록 구성 할 수 있으므로 컨테이너 설정을 확인하십시오!
예를 들어, JMS를 XA 트랜잭션과 함께 사용하는 경우 다음이 가능합니다.
XA 트랜잭션은 전체 Java EE 컨테이너에서만 사용할 수 있으므로 XA 트랜잭션은 Tomcat에서 사용할 수 없습니다.
행운을 빈다.
칼
관련 문제
- 1. JMS/MDB 롤백
- 2. JMS MessageListener에서 롤백 신호 보내기
- 3. JMS 큐 및 JMS 토픽
- 4. 롤백 삽입문
- 5. 데이터베이스 롤백
- 6. 버전 롤백
- 7. MbUnit 롤백
- 8. 트랜잭션 롤백
- 9. 롤백 drawRect :
- 10. SQL에서 롤백
- 11. lucene에서 롤백
- 12. Spring에서 임시 JMS jms 토픽 만들기
- 13. JMS 서버가 없어 질 때 JMS 잡기
- 14. JMS Alternative
- 15. JNDI가없는 JMS?
- 16. SQL에 linq로 롤백 하시겠습니까?
- 17. IDbTransaction 롤백 시간 초과
- 18. 식별자 롤백 NHibernate
- 19. SQL Server 롤백 트랜잭션
- 20. Java : 롤백 데이터베이스 업데이트?
- 21. Windows에서 롤백 루비 버전
- 22. 롤백 명령문은 정확히 무엇을합니까?
- 23. 대량 복사를위한 롤백
- 24. LINQ 및 롤백 처리
- 25. 전체 프로 시저 롤백
- 26. Ab initio 롤백
- 27. 안드로이드 sqlite 롤백
- 28. 방법 : squeryl의 트랜잭션 롤백
- 29. cakephp 롤백 트랜잭션
- 30. XML 문서의 롤백 변경
또한 계정의 성능 오버 헤드를 고려 : http://stackoverflow.com/questions/12305900/performance-overhead-of-xa-data-sources-best-practices – Vadzim