0

我有以下代码连接到谷歌云任务队列并租用一些任务:

    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 ....*/

该代码使用在我的项目中配置的服务帐户。该代码是独立的 Java 应用程序,它将在 Google Compute Engine 实例中运行,并将执行一些后台处理任务。

也许您注意到凭据中的 Datastore 和 Storage 范围。这是因为我的代码也与 Storage 和 Datastore 通信,但为​​了简单起见,我只放了与 Taskqueue 相关的代码片段。

该代码运行良好,它连接到在谷歌云中运行的任务队列。任务队列是队列,并在我的另一个应用程序中配置,GAE Web 应用程序正在创建任务并将它们存储到队列中。

现在我想在本地调试我的代码,所以我需要我的代码连接到本地任务队列,在本地调试服务器 (localhost:8888) 中运行,而不是托管在谷歌云中的任务队列。

如何修改代码使其连接到本地任务队列而不是云托管的任务队列?

4

0 回答 0