2013-10-26 9 views
11

자바 개발자로서, 일괄 처리를 위해 Spring Batch를 사용합니다. 일반적으로 스트리밍 라이브러리를 사용하여 StAX로 큰 XML 파일을 내보내는 데 사용됩니다.일괄 처리 및 기능 프로그래밍

이제 Scala 응용 프로그램을 개발 중이며 배치 처리를위한 프레임 워크, 도구 또는 지침이 있는지 궁금합니다.

내 스칼라 응용 프로그램은 Cake Pattern을 사용하며 SpringBatch와 어떻게 통합 할 수 있는지 잘 모르겠습니다. 또한 Functional programming in Scala에 설명 된 지침을 따르고 IO Monad와 같은 물건을 사용하여 기능적 순도를 유지하려고합니다. ...

나는 이것이 공개 질문 일 뿐이라는 것을 알고 있습니다. ...

여기 기능적인 배치 처리를 이미 달성 한 사람이 있습니까? 어떻게 작동 했습니까? 입출력 모나드에서 일괄 처리 작업을 생성하고 실행하는 주체가 있어야합니까? Java에서 Spring Batch를 사용하는 것처럼 재시작 가능성을 돕거나 모니터링하거나 처리 할 수있는 도구 나 지침이 있습니까? 스칼라에서 스프링 배치를 사용합니까? JMS/AMQP 메시지가 XML을 생성하는 처리를 시작하기를 기다리는 예를 보려면 통합 부분을 어떻게 처리합니까?

subjet에 대한 의견은

+2

스프링 배치가하는 일을 설명 할 수있는 좋은 소개가 있습니까? 웹 사이트를 이해하는 것이 상당히 어렵습니다. –

+2

나는 "순도"가 바람직한 목표라고 생각하지 않는다. (화학 이외의 다른 것). 공개적으로 변경할 수없는 유형을 사용하면 큰 실용 가치가 있습니다. 코드에서 모든 변경 가능한 데이터를 제거하는 것은 아닙니다. –

+0

@RandallSchulz이 목표의 목표를 실제로 알지 못해도 분명히 말하고 있지만 가능한 경우 순결은 매우 유용한 속성이 될 수 있다고 광범위하게 주장합니다. 분명히 모든 계산에는 적합하지 않지만, "기본값으로 순도"에서 추론하고 불순물을 추가하는 것이 정당한만큼 믿을 수 없을만큼 유용하다는 것을 알았습니다. 이것은 논쟁의 여지가 없지만, 당신의 견해와 균형을 이루고 싶습니다. –

답변

4

당신은 스칼라와 함께 개발하고 응용 프로그램의 종류를 언급하지 않는 오신 것을 환영합니다, 그래서 내가 여기 추측에 가서 당신은 서버 측 하나를 수행한다고 가정하고있다. 야생 추측으로 더 나아가려면 Akka을 사용하고 있다고 가정 해 봅시다. 사용하고 있기 때문에 그렇습니까? :)

이 경우, 당신이 찾고있는 것은 Akka Quartz Scheduler이며, 공식 Quartz Extension과 Akka의 cron 스타일 스케줄링을위한 유틸리티입니다. 나는 그것을 직접 시도하지 않았지만, 귀하의 요구 사항에서 Akka +이 모듈이 적합 할 것으로 보인다. Akka는 이미 실패한 액터의 재시작 가능성을 처리 할 수있는 고리를 제공하므로 액터에 내장 된 라이프 사이클 콜백을 활용하는 배치 프로세스 모니터링을 추가하는 것이 어렵지 않을 것이라고 생각합니다.

JMS/AMQP 메시징과의 상호 작용에 관해서는 JMS를 포함한 많은 프로토콜을 통해 메시지를 보내고받는 것을 지원하는 Akka Camel module을 사용할 수 있습니다. 이 모듈을 사용하면 소비자 액터가 일부 JMS 엔드 포인트에서 메시지를 수신하고 거기에서 원하는 프로세스를 시작하여 해당 프로세스 책임자에게 새 메시지를 전달하거나 전달할 수 있습니다. cron 스타일 타이머 또는 수신 메시지로 프로세스가 시작되면 동일한 액터를 다시 사용하여 작업을 완료 할 수 있습니다.