어떻게 처리기의 현재 호출이 작업 대기열에서 호출되고 있는지 여부를 코드 내에서 확실히 감지 할 수 있습니까?작업 대기열에서 코드가 실행되고 있는지 여부를 안정적으로 감지하는 방법은 무엇입니까?
나는 내가 HttpServletRequest
객체를 선택하면 GAE/J에서, 나는 following headers이 설정되어 있는지 확인할 수 있습니다, 이해 :
X-AppEngine-QueueName
X-AppEngine-TaskName
X-AppEngine-TaskRetryCount
X-AppEngine-FailFast
X-AppEngine-TaskETA
여기서 이러한 헤더 중 하나가 있으면 핸들러가 태스크 큐에 의해 호출되고 있음을 나타냅니다.
하지만 탐지를해야하는 코드의 일부가 여러 추상화 레이어 내에 깊숙이 있습니다. 여기서는 HttpServletRequest
개체에 액세스 할 수 없으며 현재 실행 환경이 안정적인지 여부를 감지 할 수있는 방법이 있습니다. 작업 대기열에서 호출 되었습니까? 코드가 SystemProperty.environment.value() == Value.Development
를 사용하여 GAE 또는 dev에 서버에서 실행되고 있는지 여부를 우리가 확인할 수있는 방법에
SystemProperty.environment.value() == Value.TaskQueue
유사 : 내가 바라고 무엇
같은 쉽게 접근 할 뭔가가있을 수 있다는 것입니다.
무엇이'doPost()'에서 헤더를 검사하고 그 결과를 추상화 된 로직에 전달하는 것을 멈추게 할 것인가? 'fromTaskQueue' 부울로? – alex
@alex : 체크가 필요한 부분은 추상화 레이어 내에 너무 깊게 묻혀 있으며, 아키텍처를 느슨하게 결합하고 싶습니다. 변수를 전달하면 불행히도 유연성이 떨어집니다. –
추상화 계층의 요점은 추상적입니다. 이런 종류의 추상화가 코드에서 깨지는 것을 피해야합니까? –