2012-06-14 4 views
0

다음과 같은 요구 사항이 있습니다.Java EE/EJB3로 일괄 처리

데이터베이스 테이블에 메시지를 지속하는 Websphere 서버와 MDB 모듈이 이미 있습니다. 각 행은 열에 INSERTED 상태로 표시됩니다.

이제 우리는 해당 메시지를 선택하여 해당 데이터베이스의 각 행을 처리하고 처리가 완료되면 Completed로 상태를 표시하는 일괄 처리 응용 프로그램을 개발해야합니다.

가장 좋은 방법은 무엇입니까? 우리는 EJB 3.1 Singleton Startup beans가 배치 애플리케이션을 시작하는 데 유용 할 것이라고 들었습니다.

답변

2

하나의 옵션은 메시지 처리를위한 두 번째 JMS 대기열을 작성하는 것입니다. 메시지를 데이터베이스에 쓰는 트랜잭션의 일부로 메시지의 ID를 새 큐에 추가하십시오.

그러면이 새로운 대기열에 첨부 된 MDB로 처리 응용 프로그램을 수행 할 수 있습니다. 이렇게하면 메시지 수신과 메시지 처리가 분리되어 MDB 풀 크기를 적절하게 관리 할 수 ​​있습니다. 또한 새 메시지를 확인하기 위해 데이터베이스를 폴링 할 필요가 없음을 의미합니다.

+0

감사합니다. Nick. 우리가 하나씩 처리하면 위의 해결책이 될 것이라고 생각합니다. 그러나 내가 처리하려고하는 메시지는 그들 사이에 동기화가 필요합니다. 예를 들어, DB에는 100 행이 있고, 동일한 ID를 갖는 메시지에는 3 행이 있습니다. 우리가 3 개의 MDB를 가지고 있다면 그 3 개의 메시지를 어떻게 동기화 할 것인가? 우리가 그들 사이의 동기화와 일괄 처리가 필요하기 때문에 거기에 어떤 해결책이 있습니다. 미리 감사드립니다 – user809648

+1

그럼 당신은 처리가 어떻게 트리거해야 정의해야 할 것 같아요. 메시지가 그룹에있는 경우 처리하기 전에 전체 그룹을받을 때까지 기다려야합니까? 전체 그룹이 언제 접수되는지 어떻게 알 수 있습니까? –