문제
에서 팟 캐스트#15,제프 언급된 그는 트위터 최고를 실행하는 방법에 대한 정기적 이벤트를 배경으로하는 경우 그것은 정상적인 기능도 찾을 수 없는 것을 통해 트위터입니다.지금 할 필요가 비슷한 일을 던지는 질문 중 하나입니다.
현재는 계획이 때 첫 번째 사용자(아마도 나)에 들어가는 사이트를 시작하는 백그라운드 스레드 기다리는 때까지 할당시간(시간에 시간)및 그 개막 이벤트는 차단하는 다른 사람들(나는 윈도우 프로그래머 무역에 의하여 그래서 나는 생각한 관점에서의 이벤트와 WaitOnMultipleObjects)때까지 완료됩니다.
어떻게 제프에 Asp.Net 고 자신의 방법을 적용하 Java 웹 응용 프로그램의 세계?
해결책
나는 생각을 개발하는 맞춤형 솔루션에 대한 백그라운드 작업 실행되지 않는 항상 가치가있다,그래서 나를 사용하는 것이 좋습니다 석영 스케줄러 에서 Java.
귀하의 상황에서 필요(백그라운드 작업을 실행하기 위해 웹 응용 프로그램에서)사용할 수 있습니다 ServletContextListener 에 포함되어 배포 초기화 엔진에는 시작 당신의 웹 컨테이너.
그 후 당신의 가능성을 시작(트리거)를 백그라운드 작업(일),예를 들어,당신이 사용할 수 있는 달력 또는 크론과 같은 표현입니다.귀하의 상황에서 대부분의 아마도 당신이 해결해야로 Simpletrigger 에 는 실행할 수 있습니 작업에 고정,정기적인 간격으로.
작업 스스로 설명할 수 있습 쉽게 너무에서 석영,그러나 당신은하지 않은 제공된 모든 정보는 당신이 필요로하는 것에 대해 실행을 제공 할 수 있도록 제안에서는 지역입니다.
다른 팁
앞서 언급했듯이 석영은 표준 솔루션입니다.는 경우에 대해 걱정하지 않는 클러스터링과 지속성을 배경의 작업에서 다시 사용할 수 있습니다 내장 ThreadPool 지원(Java5,6).를 사용하는 경우 ScheduledExecutorService 를 넣을 수 있습 Runnables 배경으로 스레드 풀을 기다리는 시간의 특정 금액을 실행하기 전에.
는 경우에 당신을 걱정 클러스터링 및/또는 지속 사용할 수 있습니다 JMS 큐 비동기 실행을 위해,하지만 당신은 여전히 방법이 필요를 지연하는 백그라운드 작업(사용할 수 있 석영이나 ScheduledExecutorService 이렇게하려면).
Jeff 의 메커니즘을 만들의 일종 캐시는 개체 ASP.Net 자동으로 다시 만들에서 어떤 종류의 간격을-그것은 될 듯 ASP.Net 특정 솔루션,그래서 아마도 당신을 도움이 되지 않습니다(또는 나)훨씬 자바에서 세계입니다.
보 https://stackoverflow.fogbugz.com/default.asp?W13117
우드:라,원래 요청 트위터에서이기 때문에,내가 그 원한 무언가가 가벼운 무게.내가 정말 원하지 않았을 같이 쓰는 윈도우 서비스입니다.나는 같은 느낌이었던 밴드 코드입니다.플러스 코드를 실제로는 웹 페이지에서 사실이기 때문에,저에게는 것은 논리적인 작업 단위의 웹사이트에이 웹 페이지입니다.그래서 그것은 정말처럼 우리는 전화로 웹 사이트,그것은 그냥 다른 요청에서 웹사이트,그래서 나는 그것을 보았으로는 뭔가가 있어야인라인,그리고 작은 접근 방식을 이용할 수 있는 최대는 나에게 추천 트위터에 기본적으로 무언가를 추가하는 응용 프로그램 캐시으로 고정이 만료 후,당신은 다시 호출할 때 그래서 그 기간이 만료하는 특정 기능이 수행하는 작업에 다음을 추가 그것을 다시 캐쉬와 같은 기간.그래서,그것은 조금 어쩌면"유대인은"오른쪽 단어입니다.
나의 접근 방식은 항상 있 OS(i.e크론 또는 Windows task scheduler)로드는 특정 URL 을에 몇 가지 간격,그리고 다음 설정 페이지에서는 URL 을 확인 큐를 수행하는 어떤 작업이 필요했지만,내가 듣고 관심이 있다면 더 나은 방법입니다.
에서 성적증명서,그것은 다음과 같의 fogbugz 사용하여 윈도우 서비스에 로드하는 URL 에 접근한다.
Spolsky:그래서 우리는 이런 특별한 페이지를 이라는 심장 박동이다.asp.고는 페이지 때마다,당신은 그것을 공격,그리고 사람이 그것을 칠 수 있다 언제든지:를 요청할 수 있습니다.하지만 그 때 페이지의 실행을 확인 큐를 기다리는 작업을 볼 수 있는 경우에는 아무것도 할 필요가 있습니다.고 아무거나가있는 경우에 수행 될 필요가있는,그것은 하나의 일을 찾은 다음에는 큐시하고 있다면 다른 것을 할 수턴 플러스,그리고 웹 페이지 전체 반환하는 것은 단 하나의 캐릭터에서 플러스와습니다.고 있다면 아무 것도 할 수 큐은 비어 반환합니다.그래서,사람을 호출 할 수 있습이고 공격으로 많은 시간,로드할 수 있습니다줍니다.asp 웹 브라우저에서 당신은 히트 Ctrl-R Ctrl-R Ctrl-R Ctrl-R 시작할 때까지 받고 적자를 대신 pluses.그리고 당신이 수행하는의 fogbugz 이 완료되면 모든것의 유지보수 작업을 관리 할 수 있습니다.그래서 그의 첫 번째 부분이고,두 번째 부분은 매우,매우 간단한 윈도우 서비스는 실행하고 그것의 전체 작업을 호출하는 것입 heartbeat.asp 및 얻는 경우에는 게다가,그것이 곧 다시고 가면 마이너스 통화,그것을 다시지만하지 않습니다.그래서 기본적으로 이 윈도우 서비스는 항상,실행하는 것은 매우,매우,매우 간단한 작업의 치는 URL 을 찾을 보면 플러스 또는 마이너스이고,다음을 예약 할 때 그것을 다시 실행되는지 여부에 따라 그리고 플러스 또는 마이너스.분명히 당신이 할 수 있는 모든 종류의 변화에서 당신이 원하는 이 테마,예를 들어,같은 어할 수 있습니다 실제로 반환하는 대신 그냥 플러스 마이너스를 말할 수 있었다"좋아 다시 나에게 전화 60 초에서"또는"나를 부르십시오 나는 더 많은 작업을 수행 할 수 있습니다." 과는 어떻게 작동하는지...도록 유지보수 서비스로,당신은 알고,그것은,당신은 알고,하프 페이지의 실행되는 코드는 정비 서비스,그리고 그것은 결코 변하지 않는 임의의 논리,거기에 그것은 단지 포함 간질하는 원인이 이러한 웹페이지를 얻을라는 특정장 주파수이다.고 내부에는 웹 페이지에 heartbeat.asp 있는 코드의 큐를 유지하는 작업을 수행해야에서 보이는 얼마나 많은 시간이 경과하고,당신이 알고,늦은 밤에 유지 관리하고 모든 일곱 일 삭제 모든 오래된 메시지가 스팸으로 표시고 모든 종류의 유지보수 작업을 정지 할 수 있습니다.그리고 그는 어떻게는 않습니다.
우리가 사용하는 jtcron 우리 예약에 백그라운드 작업을 처리합니다.그것이 잘 작동하고,이해하는 경우 크론 그것은 당신에게 의미합니다.
여기에 어떻게 그들이 그것에 StackOverflow.com:
http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/