Search code examples
google-cloud-platformgoogle-cloud-tasks

Select the service you wish to carry out a Google Task Handler


I am relatively new to Google Cloud Platform, and I am able to create app services, and manage databases. I am attempting to create a handler within Google Cloud Tasks (similar to the NodeJS sample found in this documentation.

However, the documentation fails to clearly address how to connect the deployed service with what is requesting. Necessity requires that I have more than one service in my project (one in Node for managing rest, and another in Python for managing geospatial data as asynchronous tasks).

My question: When running multiple services, how does Google Cloud Tasks know which service to direct the task towards?

Screenshot below as proof that I am able to request tasks to a queue.

Sample tasks running in queue


Solution

  • When using App Engine routing for your tasks it will route it to the "default" service. However, you can overwrite this by defining AppEngineRouting, select your service, instance and version, the AppEngineHttpRequest field.

    The sample shows a task routed to the default service's /log_payload endpoint.

    const task = {
      appEngineHttpRequest: {
        httpMethod: 'POST',
        relativeUri: '/log_payload',
      },
    };
    

    You can update this to:

    const task = {
      appEngineHttpRequest: {
        httpMethod: 'POST',
        relativeUri: '/log_payload',
        appEngineRouting: {
          service: 'non-default-service'
        }
      },
    };
    

    Learn more about configuring routes.