A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://cloud.google.com/tasks/docs/configuring-queues below:

Configure Cloud Tasks queues | Cloud Tasks Documentation

Skip to main content Configure Cloud Tasks queues

Stay organized with collections Save and categorize content based on your preferences.

You can configure your Cloud Tasks queue when you create the queue or anytime afterwards. The configuration is applied to all tasks in that queue.

Note: The gcloud tasks queues create command has a set of optional flags identical to those of the gcloud tasks queues update command described in this document.

There are three basic aspects to configuring your queues:

Configure queue-level routing

Configuring routing at the queue level overrides routing set at the task level. This is useful if you want to use Cloud Tasks as a buffer in front of your target service, or if you need to change the routing for all tasks in a queue.

Queue-level routing applies to:

Limitations

Queue-level routing is not compatible with Cloud Key Management Service (Cloud KMS) customer-managed encryption keys (CMEK). If CMEK is enabled, you can't do the following:

Configure queue-level routing for HTTP tasks

You can configure a queue to override task-level routing either when creating the queue or when updating the queue. To configure queue-level routing, set the queue's uriOverride parameter to your preferred route.

If you are applying queue-level routing as an update to an existing queue, pause the queue before applying the changes and wait one minute after applying the changes to resume the queue.

  1. Pause the queue by running the following command:

      gcloud tasks queues pause QUEUE_ID
      

    Replace QUEUE_ID with the ID of your queue.

  2. Update or remove queue-level routing.

    The following example uses the REST API to update the host that tasks are routed to:

    curl -X PATCH -d @- -i \
      -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      "https://cloudtasks.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/queues/QUEUE_ID?updateMask=httpTarget.uriOverride" << EOF
    {
      "httpTarget": {"uriOverride":{"host":"NEW_HOST"}}
    }
    EOF
    

    Replace the following:

  3. Wait one minute.

    It can take up to one minute for the new configuration to take effect. Waiting to resume the queue helps to prevent tasks from dispatching with the old configuration.

  4. Resume the queue by running the following command:

    gcloud tasks queues resume QUEUE_ID
Configure queue-level routing for App Engine tasks

To configure queue-level routing for App Engine tasks, set the queue's appEngineRoutingOverride parameter to your preferred App Engine service and version.

  1. Set up queue-level routing and override any task-level routing:

    gcloud tasks queues update QUEUE_ID \
        --routing-override=service:SERVICE,version:VERSION

    Replace the following:

    For example, if you set up a worker service to handle all tasks in a queue, you can route to that service and the default version:

    gcloud tasks queues update QUEUE_ID \
        --routing-override=service:SERVICE
  2. Verify your queue was configured successfully by running the following command:

    gcloud tasks queues describe QUEUE_ID --location=LOCATION

    Replace LOCATION with the location of the queue.

    The output should be similar to the following:

    appEngineRoutingOverride:
      host: SERVICE.PROJECT_ID.appspot.com
      service: SERVICE
    name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID
    rateLimits:
      maxBurstSize: 100
      maxConcurrentDispatches: 1000
      maxDispatchesPerSecond: 500.0
    retryConfig:
      maxAttempts: 100
      maxBackoff: 3600s
      maxDoublings: 16
      minBackoff: 0.100s
    state: RUNNING
  3. To remove queue-level routing, run the following command:

    gcloud tasks queues update QUEUE_ID \
        --clear-routing-override

    When queue-level routing is removed, task-level routing is applied to tasks in the queue and tasks added to the queue in the future.

Define rate limits

The rate limit determines the maximum rate at which tasks can be dispatched by a queue, regardless of whether the dispatch is a first task attempt or a retry.

  1. Set the maximum rate and number of concurrent tasks that can be dispatched by a queue by running the following command:

    gcloud tasks queues update QUEUE_ID \
        --max-dispatches-per-second=DISPATCH_RATE \
        --max-concurrent-dispatches=MAX_CONCURRENT_DISPATCHES

    Replace the following:

    For example, if you created a queue without setting any parameters, you can update the maximum number of concurrent tasks by running the following command:

    gcloud tasks queues update QUEUE_ID \
        --max-concurrent-dispatches=MAX_CONCURRENT_DISPATCHES
  2. Verify your queue was configured successfully by running the following command:

    gcloud tasks queues describe QUEUE_ID --location=LOCATION

    Replace LOCATION with the location of the queue.

    The output should be similar to the following:

    name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID
    rateLimits:
      maxBurstSize: 100
      maxConcurrentDispatches: MAX_CONCURRENT_DISPATCHES
      maxDispatchesPerSecond: 500.0
    retryConfig:
      maxAttempts: 100
      maxBackoff: 3600s
      maxDoublings: 16
      minBackoff: 0.100s
    state: RUNNING
Methods to define queue processing rates

You can define queue processing rates using either the Cloud Tasks API or by uploading a queue.yaml file. Both methods result in queues that use the same underlying mechanism.

Caution: While either method can be used to create queues, it is strongly recommended that you use either a queue.yaml file or the Cloud Tasks API to configure your queues, but not both. For more information, see Use Queue Management or queue.yaml.

In both cases, the queue uses the token bucket algorithm to control the rate of task execution. Each named queue has a bucket that holds its tokens.

Each time your application executes a task, a token is removed from the bucket. The queue continues processing tasks until its bucket runs out of tokens. The system refills the bucket with new tokens continuously based on the max_dispatches_per_second rate that you specify for the queue. If your queue contains tasks to process, and the queue's bucket contains tokens, the system simultaneously processes as many tasks as there are tokens, up to the max_concurrent_dispatches value you have set.

An uneven load can allow the number of tokens in the bucket to grow significantly, which can lead to bursts of processing when a burst of requests comes in. In this case, your queue might experience an actual dispatch rate that exceeds your max_dispatches_per_second rate, consuming system resources and competing with user-serving requests. In cases where you are using queues to manage dispatch rates based on relatively slow SLAs for downstream services, this can lead to errors like HTTP 429 (Too Many Requests) or HTTP 503 (Service Unavailable).

In most cases, using the Cloud Tasks API method and letting the system set max_burst_size produce a very efficient rate for managing request bursts. In some cases, however, particularly when the rate needed is relatively slow, either using the queue.yaml method to manually set bucket_size to a small value, or setting your max_concurrent_dispatches to a small value using the Cloud Tasks API, can give you more control.

Set retry parameters

If a task doesn't complete successfully, Cloud Tasks will retry the task with an exponential backoff according to the parameters you have set.

Tip: To debug your retry parameters, you can log the status code for each invocation of a task by using Cloud Logging with your queues and by setting a log sampling ratio to specify what fraction of operations to write to Cloud Logging.
  1. Specify the maximum number of times to retry failed tasks in the queue, set a time limit for retry attempts, and control the interval between attempts by running the following command:

    gcloud tasks queues update QUEUE_ID \
        --max-attempts=MAX_ATTEMPTS \
        --max-retry-duration=MAX_RETRY_DURATION \
        --min-backoff=MIN_INTERVAL \
        --max-backoff=MAX_INTERVAL \
        --max-doublings=MAX_DOUBLINGS

    Replace the following:

    Note: If MAX_ATTEMPTS is set to a value other than -1 and MAX_RETRY_DURATION is greater than zero, then Cloud Tasks stops retrying when MAX_ATTEMPTS and MAX_RETRY_DURATION are both satisfied. When the task has been attempted MAX_ATTEMPTS times and the MAX_RETRY_DURATION time has passed, no further attempts are made, and the task is deleted. If MAX_ATTEMPTS is set to -1 and MAX_RETRY_DURATION is set to 0, then the task is retried infinitely.

    For more parameter details, see the RetryConfig settings for the Queue resource.

  2. Verify your queue was configured successfully by running the following command:

    gcloud tasks queues describe QUEUE_ID --location=LOCATION

    Replace LOCATION with the location of the queue.

    The output should contain the retry parameters that you set.

What's next

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-08-07 UTC.

[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[],[]]


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4