2010-12-13 5 views
0

나는 자신을 식별하기 위해 고유 한 ID를 보내는 일괄 웹 서비스를 사용해야합니다. 그러면 서비스는 나중에 몇 분 후에 고유 한 응답 ID를 보내야합니다. 필요한 정보. 일반적으로 응답 ID를 추적하고 나중에 실제 응답을 얻기 위해 서비스를 다시 호출하는 좋은 방법은 무엇입니까?비동기 웹 서비스를 사용하는 일반적인 Java 디자인

답변

0

쉬운 해결책은 ID를 저장하고지도 * 또는 목록을 타임 스탬프 한 다음 특정 나이보다 오래된 모든 ID를 깨우고 처리하는 별도의 스레드에 루프를 넣는 것입니다. (지도 또는 목록이 스레드로부터 안전한지 확인하십시오.) 그러나 앱이 다운되어 다시 실행되면 보류중인 요청을 추적 할 수 없습니다. 케이스를 처리해야하는 경우 데이터베이스를 사용하십시오.

* 특정 해결 방법 중 하나는 타임 스탬프로 정렬 된 SortedMap을 사용하는 것입니다. 모든 타임 스탬프가 고유해야하므로 밀리 초당 하나 이상의 요소를 맵에 배치하지 않을 것으로 예상해야합니다. 그런 다음 ID를 맵에 넣으려면 타임 스탬프를 System.currentTimeMillis()로 지정하고 타임 스탬프는 이미 맵에서 키가되는 동안 증가 시키십시오. 그런 다음 (timestamp, ID) 쌍을 SortedMap에 넣습니다. 이 솔루션은 편리합니다. 왜냐하면 루프 스레드는 SortedMap의 요소를 처음부터 너무 새로 읽을 때까지 중지 한 다음 중지해야합니다. 왜냐하면 모든 가장 오래된 요소가 맵의 시작 부분에 있기 때문입니다.

관련 문제