Apache Camel 통합 플랫폼을 사용 중이고 restlet을 통해 일부 데이터를 업데이트 중입니다. 이 업데이트가 완료되는 데 몇 시간이 걸리기 때문에이 업데이트의 상태를 알고 싶습니다. 우리가 가진 문제는 프로그램이 끝날 때까지 프로그램에서 응답을받지 못한다는 것입니다. 반송파 유형은 restlet 유형이므로 브라우저가 완료 될 때까지 기다리기 때문에 작업이 완료 될 때까지 기다려야합니다. 우리는 비동기적인 방법을 살펴 보았지만 restlet 데이터 캐리어가 비동기를 지원하지는 않는 것 같습니다.Restart in Apache Camel 완료까지 브라우저를 잠그지 않음
우리가 스레드 풀을 사용하여 작업을 실행하는 것으로 생각했지만 해결 방법이 없다면 나중에 비동기 작업을 수행하는 다른 방법인지 알고 싶습니다. 나중에 더 많이 사용하고 작업을 수행 할 수도 있습니다. async는 매번 스레드를 실행하지 않는 것이 바람직합니다.
예제 코드 :이 응답하기 전에 브라우저 위의 코드에서 다른 이름으로
from("restlet:" +BASE_URL + "test1?restletMethods=get").
routeId("Test 1").
log(LoggingLevel.INFO, log.getName(), "Test 1 Started").
delay(10000).
log(LoggingLevel.INFO, log.getName(), "Test 1 Complete").
to("mock:update");
10 초를 기다립니다. 이 기간 동안 브라우저를 즉시 사용할 수 있고 데이터를 가져오고 싶습니다.
잘 모르겠습니다. 경로에 지연을 추가하는 코드가 있지만 경로를 즉시 사용할 수 있기를 원하십니까? –
일부 작업을 시뮬레이션 한 것입니다. 그리고 나서 작업이 실행 중일 때 실행되는 동안 그 작업의 상태를 얻고 싶습니다. 이제는 더 큰 프로젝트에서 일을 마칠 때까지 데이터를 얻을 수 없습니다. 우리는 낙타가 restlet을 호출 큐에 넣고 순서대로 실행한다는 것을 알아 냈습니다. – Tor
확실히 백엔드 서비스의 모의 객체를 만든 다음 지연을 추가하는 것이 좋습니다. 당신은 원하는 모든 메시지를 리턴하는 모든 경로에 대한 seda 큐를 만들 수 있습니다. Seda는 비동기식으로 작동하며 GET 후 브라우저로 제어권을 반환해야합니다. –