2014-03-31 6 views
1

현재 webMethods 큐로 메시지를 보내기 위해 JmsTemplate의 send (Destination, messageCreator) 메소드를 사용하고 있습니다. 그러나 send 메소드가 너무 오래 걸리므로 반환 할 시간이 너무 오래 걸리므로 제한 시간은 5 초 여야합니다. 제 질문은 어떻게 이것을 보장 할 수 있을까요? JmsTemplate에는 전송 타임 아웃이 없다.JMSTemplate의 롤백 또는 시간 초과 send()

우리가 생각하는 옵션은 send() 메소드에서 5 초 동안 응답을 기다리는 것입니다. 5 초 이상 경과하면 실패로 간주합니다. 그러나이 요청을 실패로 간주하기 때문에 보내지는 메시지가 전혀 처리되지 않도록해야합니다. 어떻게해야합니까? 롤백? 감사!

답변

1

JmsTemplate은 핵심 JMS API보다 상위 수준의 추상화입니다. 그 핵심 (JMS) API에는 그러한 메커니즘이 없습니다.

JMS 보내기가 그렇게 오래 걸리는 경우는 매우 드뭅니다. 당신은 정말로 거대한 메시지와 느린 네트워크가 없다면.

다른 스레드에서 전송을 처리하고 5 초 후에 인터럽트를 시도 할 수 있지만 JMS 클라이언트 라이브러리 코드가 인터럽트 가능한 경우에만 작동합니다.

그러나 경쟁 조건 때문에 안정적으로 원하는 작업을 수행하는 것은 일반적으로 불가능합니다.