2014-03-04 1 views
0

JEE 애플리케이션에서 워크 플로우 실행을 지원하는 수많은 JMS 대기열을 제거해야합니다. 일반적으로 워크 플로는 여러 개의 순차적 인 작업으로 구성됩니다. 작업에는 외부 시스템 호출 및 기타 비즈니스 논리가 포함될 수 있습니다. 태스크 프로세서는 MDB로 구현됩니다. 태스크 프로세서는 입력 큐에서 메시지를 수신하면 비즈니스 로직을 수행하고 입력 메시지를 풍부하게하여 워크 플로우 체인의 다음 태스크 프로세서의 입력 대기열에 넣습니다. 작업 프로세서가 설정에 따라 작업을 수행하지 못하면 지연된 실행을 위해 입력 메시지가 대기열에 롤백되거나 오류 대기열에 저장됩니다. 이제 JMS 대기열 대신 데이터베이스를 사용해야합니다. 작업은 작업 상태 (지연, 진행, 실패 등), 대상 (작업을 실행해야하는 프로세서의 이름/별칭) 및 물론 비즈니스 데이터를 포함하여 데이터베이스 테이블의 행으로 유지되어야합니다.java ee 작업 스케줄링 및 실행

이미 JCA를 사용하여이 요구 사항을 구현하기 시작했습니다. 내 인바운드 커넥터는 DB 테이블에서 작업을 검색 한 다음 적절한 끝점 (비즈니스 인터페이스를 구현하는 MDB)을 호출합니다.

요구 사항을 충족시키는 다른 방법이 있습니까? 어쩌면 누군가가 그런 시나리오를위한 가벼운 오픈 소스 프레임 워크를 알고 있을까? BPM 프레임 워크에 대해서는 언급하지 마십시오.

답변

1

많은 대기열에서 많은 메시지를 관리하는 것이 원하는만큼 "경량"이 아니므로 JMS를 없애고 싶다고 가정합니다. 코드 기반이 커지고 있습니다!

  • 문제 또는 병목 현상이 어디에 있는지를 알기 위해 지속적으로 많은 대기열을 모니터링합니다.
  • 잠시 동안 외부 시스템 중 하나가 다운되면 많은 호출이 이루어지고 실패하고 모든 메시지가 오류 대기열로 실행됩니다.
  • "워크 플로"의 단일 인스턴스에 어떤 일이 발생했는지 확인하려면 로그 파일을 greping하고 있습니다.
  • 끝에서 끝까지 워크 플로를 보려면 손으로 직접 작성한 문서를 사용해야합니다 (항상 정확하지는 않음).
  • 하나의 단계를 추가하거나 제거하면 변경되지는 않았지만 거기에있는 모든 단계를 찾아서 업데이트해야합니다.
  • 새 버전을 배포하기 전에 이전 버전의 작업이 최종 상태로 실행될 때까지 기다리는 중입니다.

그리고 당신의 JMS 솔루션을 성취 반면, 새로운 솔루션을 고려해야 할 많은 비 기능적 요구 사항이 있습니다 : 확장 성, 신뢰성 등 모두 모두, 사람들은 와 함께 ... 다하기 힘든 요구 사항 모든 기술.

  • 는 전체 프레임 워크를 시작하지 않고 일반 비즈니스 로직 부분을 테스트 할 수 있습니다

    은 아마 당신은 "경량"는 당신에게 가장 중요한 다른 지역을 고려할 수 있습니다? 나는. 비즈니스 로직이 프레임 워크에 얼마나 강하게 결합되어 있습니까?
  • 시스템을 프로그래밍하고 운영하는 것이 얼마나 어렵습니까? 이미 알고있는 사람들을 찾는 것이 얼마나 어렵습니까?
  • 이전 시스템에서 새로운 단계별로 또는 빅뱅으로 만 이전 할 수 있습니까?

이 영역에는 수많은 솔루션이 있지만 모든 문제에 대한 원 스톱 즉시 사용 가능한 솔루션은 없습니다.일부는 일괄 처리 (Spring Batch 또는 Java Batch와 같은) 지향이며, 다른 것은 메시지 지향적입니다 (예 : Akka 또는 Hystrix). 그것들을 비교하는 것은 그 자체로 과학입니다. 최고의 작업 수, 단계 수, 외부 시스템 호출 수 등과 같이 많은 세부 사항을 제공 할지라도 여기에는 완벽한 해답을 얻지 못할 것입니다. 몇 번이고 반복 해 보았습니다. 비즈니스 워크 플로를 정확히 알고 있다면 기술을보다 쉽게 ​​대체 할 수 있습니다 ... 그래서 이것이 전제 조건입니다.

그런 다음 다른 솔루션 (시간이 있다면)으로 놀아 보거나 현재 위치에 머무를 것을 권합니다 ... 가능한 모든 솔루션 중에서 최악의 것은 아닙니다. do not ... 그리고 나는 정말로 그것을 의미한다 : 은 당신이 상상할 수있는 것보다 훨씬 "가벼운"것이 아니라는 또 다른 "가벼운"것을 구현하지 않는다.

마지막으로 한 가지 : 저는 전통적인 BPM 프레임 워크, 즉 BPEL 및 친구들에 대한 귀하의 생각을 공유합니다. 그러나 봐야 할 가치가있는 Camunda BPM과 같은 가벼운 오픈 소스 프레임 워크가 있습니다.