내가 직면 한 디자인 문제를 처리하는 방법에 대한 아이디어를 얻을 수 있는지 궁금합니다. 간단히하기 위해 Tomcat에서 3 개의 다른 시스템/jvms에서 3 개의 엔드 포인트를 실행한다고 가정 해 봅시다. 엔드 포인트는 다음과 같은 책임이 있습니다분산 트랜잭션 Java JMS
엔드 포인트 1 - 수요 데이터를 받아 순서로이 데이터가
끝점 2 요청 변환은 - 주문 요청에 소요되는 순서를 저장하고 주문
엔드 포인트를 반환 3 - 주문을 가져 와서 특정 공급 업체의 xml 형식으로 변환하여 대기열로 보냅니다.
편집 :이 엔드 포인트는 REST를 통해 다른 클라이언트에 대한 현재 서비스로 존재합니다. JTA Transaction Manager에 Atomikos를 사용할 수있는 옵션이 있으며 우리는 ActiveMQ를 사용하고 있습니다.
이렇게 말하면서 필자는 요청 데이터 메시지를받는 큐 설정을 가지고 있습니다. 수신 된 각 수요 데이터 메시지에 대해 본질적으로 XA를 통해 하나의 작업 단위에있는 3 개의 엔드 포인트 각각을 통해 퍼널을 수행하려고합니다. 필자는 3 종점 각각을 완벽하게 제어 할 수 있으므로 어떤 통신 프로토콜을 사용할 수있는 유연성이 어느 정도 있습니다. 또한 결국에는 매일 약 500 ~ 1 백만 건의 메시지가 들어올 것입니다. 분산 트랜잭션에서이 엔드 포인트를 함께 묶기 위해 어떤 통신 프로토콜을 사용합니까?
나는 Camel에 대한 몇 가지 경험을 가지고 있지만, 한 가지 작업 단위로 묶는 방법에 대해 꼼짝 못하게하고 있습니다. RMI는 본질적으로 동기적인 것처럼 보이므로 JMS보다 적절합니까? 제공된 모든 도움에 대해 미리 감사드립니다. fusesource에서 the Apache Camel documentation에서
이 트랜잭션은 얼마나 오래 실행되어야합니까? 얼마나 자주 롤백해야합니까? – flup
내 견지에서 말하면 의미가 없습니다. 나는 물건을 분리하고 비동기 적 접근법을 취하고 다른 한편으로는 단계 1이 단계 3 일 경우에만 성공적이라는 말로 고음을주고 싶습니다. 성공했습니다. 그리고 장시간 실행되는 트랜잭션이 그러한 시스템의 처리량을 손상 시킨다는 것을 알고 있어야합니다. 그래서 마지막 질문에 : YES, RMI 또는 WebServices와 같은 동기식 프로토콜이 단일 컨트롤러를 사용하여 작업을 쉽게하고 동기가 잘 맞으면 짧게 유지할 수 있습니다. –
@Sir RotN, 답장과 아이디어에 감사드립니다. 이러한 엔드 포인트를 하나의 트랜잭션으로 그룹화하려고하지만 현재이 엔드 포인트는 다른 클라이언트에 대한 서비스로 존재합니다. UI에 사용할 수있는 REST 서비스 인터페이스가 있습니다. – kdye43