appengineでTaskQueueを動かした時のリクエストヘッダーの値からリトライ回数とキュー名を取得する

http://id-bluerabbit.appspot.com/taskQueue/addにアクセスされたら下記のコードでTaskQueueをaddするコードを書いた

 QueueFactory.getDefaultQueue().add(TaskOptions.Builder.url("/task/run"));

そのTaskQueueが実行された場合のリクエストヘッダーの値は以下の通り

 Content-Type:application/x-www-form-urlencoded
 User-Agent:AppEngine-Google; (+http://code.google.com/appengine)
 Referer:http://id-bluerabbit.appspot.com/taskQueue/add
 Host:id-bluerabbit.appspot.com
 X-AppEngine-QueueName:default
 X-AppEngine-TaskName:9010321754918027069
 X-AppEngine-TaskRetryCount:0
 Content-Length:0

TaskQueueでリトライ回数を取得する方法

    private String getTaskRetryCount() {
        return request.getHeader("X-AppEngine-TaskRetryCount");
    }

TaskQueueでキュー名を取得する方法

    private String getQueueName() {
        return request.getHeader("X-AppEngine-QueueName");
    }

バージョンアップで変わりそうな感じもするけど、とりあえずこれで取れるようだ。

追記

appengineのバージョンが1.2.6になってからコンソール画面でリトライ回数とtask名がみれるようになってますね。

TaskQueueでタスク名を取得する方法

    private String getTaskName() {
        return request.getHeader("X-AppEngine-TaskName");
    }

下記の3つはログを出しておいたほうがよさそうです。

  • X-AppEngine-QueueName
  • X-AppEngine-TaskName
  • X-AppEngine-TaskRetryCount