Google Cloud Taskqueue に接続していくつかのタスクをリースする次のコードがあります。
List<String> scopes=new ArrayList<String>();
scopes.addAll(DatastoreOptions.SCOPES);
scopes.add(STORAGE_SCOPE);
scopes.add(TaskqueueScopes.TASKQUEUE);
Credential credential = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(System.getenv("DATASTORE_SERVICE_ACCOUNT"))
.setServiceAccountScopes(scopes)
.setServiceAccountPrivateKeyFromP12File(new File(System.getenv("DATASTORE_PRIVATE_KEY_FILE")))
.build();
taskqueue = new Taskqueue.Builder(
HTTP_TRANSPORT, JSON_FACTORY, credential).setApplicationName(APPLICATION_NAME)
.setTaskqueueRequestInitializer(new TaskqueueRequestInitializer() {
@Override
public void initializeTaskqueueRequest(TaskqueueRequest<?> request) {
request.setPrettyPrint(true);
}
})
.build();
Taskqueue.Tasks.Lease leaseRequest =
taskQueue.tasks().lease(APPLICATION_ID, TASK_QUEUE_NAME, 5, 30);
Tasks tasks=leaseRequest.execute();
/*... and I'm doing something with the leased tasks ....*/
コードは、プロジェクトで構成されたサービス アカウントを使用します。このコードは、Google Compute Engine インスタンスで実行され、いくつかのバックグラウンド処理タスクを実行するスタンドアロンの Java アプリケーションです。
認証情報に Datastore と Storage のスコープがあることに気付いたかもしれません。これは、私のコードが Storage および Datastore とも通信するためですが、わかりやすくするために Taskqueue に関連するコード スニペットのみを記載しています。
コードは完全に機能し、Google クラウドで実行されている Taskqueue に接続します。Taskqueue はプルキューであり、別のアプリケーション (タスクを作成してキューに格納する GAE Web アプリケーション) で構成されます。
コードをローカルでデバッグしたいので、Google クラウドでホストされている Taskqueue ではなく、ローカル デバッグ サーバー (localhost:8888) で実行されているローカルTaskqueue にコードを接続する必要があります。
クラウドホストのタスクキューではなく、ローカルのタスクキューに接続するようにコードを変更するにはどうすればよいですか?