2011-02-09 2 views
2

여러 개의 독립적 인 데이터베이스 SELECT (즉, 동시에 호출 할 수 있음)를 만드는 Weblogic 서버에 Spring 웹 응용 프로그램을 작성하려고합니다. 그 중 하나는 실행에 15 분이 걸립니다.웹 응용 프로그램에 대한 동시 데이터베이스 액세스 패턴

결과를 모두 가져 오면 결과가 포함 된 이메일이 사용자 목록으로 전송됩니다.

이 문제를 해결하는 좋은 방법은 무엇입니까? 도울 수있는 Spring 라이브러리가 있습니까? 아니면 제가 할 일을하기 위해 데몬 쓰레드를 만들 수 있습니까?

EDIT : 응용 프로그램 계층 (비즈니스 요구 사항)에서 수행해야하며 웹 응용 프로그램에서 전자 메일을 보냅니다.

+0

"15 분"이라고 말하면 15 초가 되었습니까? – Nishant

+0

은 데이터 또는 장기간 실행되는 요청 중 하나 또는 둘 모두를 걱정할 필요가있는 문제입니까? – hvgotcodes

+0

'그 중 하나가 실행하는데 15 분이 걸립니다 .' 그것은 정말로 느리고, 뭔가가 효율적으로 실행되지 않습니다. –

답변

1
  1. 모든 것을 최선으로 수행하고 있습니까? 수십 개의 테이블에 걸쳐 gabillion 행이없고 조인 heckofalot이 필요하지 않는 한 15 분은 정말 오랜 시간입니다. 이것이 최우선 과제입니다. 왜 그렇게 오래 걸릴까요?

  2. 일정한 간격으로 이메일 작업을 수행합니까, 아니면 웹 응용 프로그램에서 호출합니까? 간격을 설정하면 바깥 작업에서, 다른 컴퓨터에서 수행해야합니다. 데몬이나 석영 스케쥴러를 사용할 수 있습니다.

  3. 웹 응용 프로그램에서이 프로세스를 시작해야하는 경우 비동기 적으로 수행해야합니다. JMS를 사용할 수도 있고, 새로운 작업 요청을 입력하는 테이블을 가질 수도 있습니다. 데몬 프로세스는 X 시간마다 새로운 작업을 찾습니다. 백그라운드 스레드를 실행하는 것은 가능하지만 오류가 발생하기 쉽고 복잡하지는 않습니다. 특히 다른 유효한 옵션이 더 간단하므로 유용 할 수 있습니다.

+0

1. 솔직히 모든 것이 최적으로 이루어 졌는지는 모르겠지만 데이터베이스를 제어 할 수는 없습니다. 호출 할 고정 된 SQL 문 집합이 주어 졌으므로 내 관심사가이 요구 사항을 해결하기 위해 작동하고 응용 프로그램 수준에서 작동하게합니다. 2. 전자 메일 작업이 웹 응용 프로그램에서 호출됩니다. 3. 다른 JMS 대기열 구독자를 추가하는 것은 (내가 일하는) 너무 오랜 시간이 걸릴 것입니다. 그래서 내가 남긴 유일한 답은 백그라운드 스레드입니다. 여러분이 말했던 것처럼 오류가 발생하기 쉽습니다. 고맙습니다. – Russell

+0

@russell, webapp 외부에서 처리 작업을 실행해야합니다. 왜 '일자리 요청을 테이블에 넣고 간단한 작업으로 새로운 일자리를 처리 할 수있는 간단한 데몬을 만들지 않을까요? – hvgotcodes

+0

유일한 방법은 테이블을 만들 수있는 권한이 없다는 것입니다. 아니면 더 비 유적으로 말 했니?여기에 전문가들이 권장하는 것이 최선의 방법이라고 확신하지만, 제 경우에는 해결 방법이 필요할 수 있습니다. – Russell

0

당신이 장기 실행 가능성 비동기 작업에 봄 지원에 대한 요청하는 경우, 당신은 Spring JMS support과 봄 Batch 사이에서 선택할 수 있습니다.

+0

배치를보고 싶을 수 있습니다. 고맙습니다. – Russell

0

스프링 쿼츠를 사용하여 작업을 예약 할 수 있습니다. 그렇게하면 작업은 동일한 컨테이너에서 실행되지만 HTTP 요청을 트리거하지 않아도됩니다.

+0

고마워요! 나는 이것도 조사하고 있었다. – Russell

관련 문제