在我的代码深处,我如何可靠地检测到处理程序的当前调用是否是从任务队列中调用的?
我知道,在 GAE/J 中,如果我检查了HttpServletRequest
对象,我可以检查是否设置了以下标题:
X-AppEngine-QueueName
X-AppEngine-TaskName
X-AppEngine-TaskRetryCount
X-AppEngine-FailFast
X-AppEngine-TaskETA
任何这些标头的存在都表明处理程序正在由任务队列调用。
但是假设我的代码中需要进行检测的部分在几个抽象层的深处,我无法访问HttpServletRequest
对象,有没有什么方法可以可靠地检测当前执行环境是否是从任务队列中调用的或不?
我希望有一些容易获得的东西,比如:
SystemProperty.environment.value() == Value.TaskQueue
类似于我们可以使用SystemProperty.environment.value() == Value.Development
.