이전 게시물은 주문이나 요청을 비동기식으로 대기열에 넣은 다음 나중에 가져 오도록 모델 측면에서 정확합니다. 그러나 장기 실행 프로세스의 문제는 실제로 해결되지 않습니다.
대기열 및 주제와 관련하여 지속적인 대기열의 이점은 대기열에 사용자가없는 경우 구독자가있을 때까지 메시지가 소비되기를 기다리는 것입니다. 항목에서 연결되지 않은 소비자가 다시 연결되면 부재시 전송되는 메시지를 수신하게하려면 영구 가입을 만들어야합니다.
그래서 장기 실행 프로세스는 어떻게 정의합니까? 다중 단계 프로세스의 경우 일반적으로 워크 플로우 엔진과 같은 것을 사용합니다. BPM 도구 또는 "OS Workflow"와 같은 옵션이 있습니다. 아래 예제처럼 보이는 자생 솔루션을 사용할 수도 있습니다.
1) 프로세스의 단계를 정의하는 일종의 워크 플로 정의가 필요합니다. 이는 특성 파일 또는 XML 파일 일 수 있습니다. 2) Web App는 실행될 프로세스의 표시와 함께 대기열 또는 주제 (pub/sub)에 메시지를 넣습니다 (또는 다른 프로세스에 대해 특정 대상을 가질 수 있습니다). 3) Dispatcher MDB가 '주문'을 선택합니다. 상태가 'NEW'인 큐를 종료하고 첫 x 째 단계 처리를 시작합니다. 4) 단계가 완료되면 MDB는 실행중인 프로세스와 실행될 마지막 단계 또는 실행 된 마지막 단계를 나타내는 큐에 새 메시지를 둡니다 (프로세스가 결정적 일 수있는 방법에 따라 다름)) 5) MDB가 메시지를 가져 와서 프로세스가 'IN_PROGRESS'인지 확인합니다. 실행될 다음 단계를 판별하거나 메시지 (JMS 헤더 값 또는 XML 형식, 아마도 XML 형식)에서 다음에 실행할 단계를 읽습니다. 6) 단계 4 & 5는 프로세스 인스턴스 완료되었습니다
이 경우 주문 및 프로세스 인스턴스 정보의 외부 표현이 필요합니다. 이렇게하면 웹 애플리케이션의 요청 상태를 확인할 수 있습니다. 웹 애플리케이션이 상태 정보에 액세스 할 수 있도록 프로세스의 각 단계가 완료되면 업데이트 된 상태로 주문을 읽고 유지해야합니다.
이 아키텍처의 핵심 구성 요소는 메시지를 수신하고 프로세스의 다음 단계를 실행하는 디스패처 MDB입니다. OS Workflow로 작업했을 때 그 핵심 부분은 하나도 빠졌습니다. 이 방법으로 풀의 MDB 수와 큐의 사용자 수를 제어하여 프로세스 단계를 실행하는 스레드 수를 제어 할 수 있습니다. 이 아키텍처에서는 워크 플로 단계에 대한 항목 위에 큐를 사용할 것을 권장합니다. 그러나 각 프로세스 단계가 끝나면 구독자가 업데이트 된 상태 정보를 얻을 수있는 메시지를 게시 할 수 있습니다.
JPA를 비롯한 Java EE6 기술을 사용하면 쉽게 XSD를 만들 수 있고 JAXB를 사용하여 도메인 데이터 모델 POJO를 생성하고 지속성을 위해 JPA를 사용할 수 있습니다. 올해 초 WebLogic에서 지원되는 JEE6 기술을 다루는 웹 캐스트를했습니다. 다음은 리플레이입니다 : http://www.oracle.com/technetwork/middleware/weblogic/learnmore/weblogic-javaee6-webcasts-358613.html.
나는 또한 JBoss의 마이그레이션 : [email protected]에 대한 당신과 함께 말을 여전히 관심
감사합니다, 메시지 지향 아키텍처에 대한 JMS를 사용하는 방법에 대한이 모든 예는? – wsb3383
또한 게시/구독 방법 또는 대기열 방법을 사용하는 것이 좋습니다. 이유는 무엇입니까? – wsb3383