2012-03-21 3 views
1

일괄 처리로 메시지를 처리해야합니다 (예 : 10). 10 트랜잭션 (또는 일부 시간 초과)이 지나면 10 트랜잭션 모두에 대해 단일 커밋이 발생하고 예외가 발생하면 10 개의 모든 메시지가 롤백되고 다시 전달됩니다.MDP를 사용하여 단일 트랜잭션에서 여러 JMS 메시지 수신

우리의 응용 프로그램은 Weblogic 11g에서 실행되며이 기능은 weblogic MDB (일괄 처리 jms 메시지 http://docs.oracle.com/cd/E13222_01/wls/docs90/bridge/tuning.html)를 사용하여 존재한다는 것을 알고 있습니다.

우리는 응용 프로그램에서 봄에 많이 의존하고 있으며 여러 가지 이유로 EJB를 사용하지 않을 것입니다. 스프링 MDP를 사용하여이를 달성 할 수있는 방법이 있습니까? 아니면 거기에 도구가 있을까요?

답변

0

이것은 자신을 구현하는 데 큰 문제가 아닙니다. 난 당신에게 내가 같은 요구 사항

한 잡았다 I를 구현했던 경험에 대해 말할 수있는 직접적인 대답을 제공하지 못할 때 그래서

(C#으로는 JMS에 대해 여전히 있지만) 저는 사실 어제했다 큐에 여러 소비자 (각 일괄 처리 제공)를 실행하고 대기열에서 프리 페치를하면 JMS 브로커가 사용자에게 메시지 배달을 낭비한다는 의미가되었습니다.

이것은 완벽하게 수용되는 동작이지만 나는 소비자들 사이에서 자신의 동기화 메커니즘을 사용하여 누가 누가 소비했는지를 조정하고 더 중요한 것은 프리 페치 (prefetch)를 꺼 버렸습니다.

+0

나는 DefaultMessageListenerContainer를 확장하고 Spring이 트랜잭션을 처리하는 곳인 receiveAndExecute()를 재정의하는 것에 대해 생각하고 있습니다. 차라리 봄 기능을 내장하고 싶지만 존재하지 않을 수도 있습니다. 답장을 보내 주셔서 감사합니다 –