Scegli il metodo di creazione delle attività

Puoi creare attività HTTP utilizzando i metodi BufferTask o CreateTask. Questa pagina fornisce indicazioni su come scegliere tra i due metodi per creare attività HTTP.

Il metodo BufferTask consente di creare un'attività inviando una richiesta HTTP alla coda. Il metodo CreateTask consente di creare un'attività costruendo l'oggetto dell'attività. Nella maggior parte dei casi d'uso, non è necessario creare esplicitamente l'oggetto attività. Il metodo migliore per creare attività dipende dalla disponibilità del routing a livello di coda per la coda.

Prima di iniziare

Consulta il seguente elenco di casi d'uso per verificare se si applicano al tuo caso:

  • Vuoi creare attività utilizzando l'API RPC o le librerie client (anziché l'API REST)
  • Vuoi creare attività come oggetti attività di App Engine (anziché come oggetti attività più tipici per target HTTP generici che possono essere o meno destinazioni di App Engine)

Se uno di questi scenari si applica al tuo caso, non è necessario scegliere il metodo di creazione dell'attività perché è supportato un solo metodo (il metodo CreateTask). Vai direttamente alla documentazione di CreateTask per il tuo tipo di attività:

Controllare se la coda ha il routing a livello di coda

  1. Esegui il seguente comando gcloud CLI nel tuo terminale:

    gcloud tasks queues describe QUEUE_NAME

    Sostituisci QUEUE_NAME con il nome della coda.

  2. Nell'output, cerca il campo httpTarget e controlla se uriOverride è stato impostato.

    • Se l'output include una riga per uriOverride con un valore host specificato, la coda ha il routing a livello di coda. Per scegliere il metodo di creazione delle attività, consulta la sezione Code con routing a livello di coda.

    • Se l'output non include una riga per uriOverride o se la descrizione di uriOverride non mostra un valore host specificato, la coda non ha il routing a livello di coda. Per scegliere il metodo di creazione delle attività, consulta la sezione Code senza routing a livello di coda (o configurare il routing a livello di coda).

Code con routing a livello di coda

Per le code con routing a livello di coda, il metodo di creazione dell'attività dipende dai requisiti di routing dell'attività:

  • L'attività ha gli stessi requisiti di routing specificati a livello di coda: utilizza BufferTask. Scopri come creare attività con il metodo BufferTask.
  • L'attività ha requisiti di routing diversi da quelli specificati a livello di coda: imposta UriOverrideEnforceMode per la coda su IF_NOT_EXISTS per garantire che il routing a livello di coda si applichi alle attività per cui non esiste il routing (ad esempio BufferTask attività), ma rispetta il routing delle attività che hanno le proprie specifiche di routing. Dopodiché usa CreateTask. Questo metodo consente di specificare un singolo routing per l'attività. Scopri come creare attività con il metodo CreateTask.

Code senza routing a livello di coda

Per le code senza routing a livello di coda, crea le attività utilizzando il metodo CreateTask (oppure configure il routing a livello di coda). Il metodo CreateTask include la specifica del routing per l'attività, necessaria per le code che non contengono già informazioni di routing a livello di coda. Scopri come creare attività con il metodo CreateTask.

Informazioni sul routing a livello di coda

Il routing a livello di coda consente di specificare informazioni predefinite per il routing delle attività in base alla coda in cui si trovano. Puoi specificare se vuoi che il routing predefinito venga applicato solo alle attività che non hanno informazioni di routing specifiche o a tutte le attività.

Scegli il routing a livello di coda se vuoi:

  • Creare attività con richieste HTTP standard (anziché creare l'oggetto attività)
  • Usa una coda come buffer davanti a un servizio di destinazione

L'approccio in base al target

Il routing a livello di coda funziona al meglio con architetture che utilizzano una coda per ogni servizio di destinazione. Questo modello ti consente di:

  • Gestire le attività in base al loro target (ad esempio, reindirizzare un gruppo di attività se il servizio di destinazione non è attivo)
  • Invia tutte le attività in coda alla stessa destinazione
  • Crea attività senza creare esplicitamente l'oggetto dell'attività utilizzando il metodo BufferTask

Attivazione e disattivazione del comportamento di override a livello di coda

Dopo aver configurato il routing a livello di coda, puoi decidere quando applicarlo impostando il valore UriOverrideEnforceMode della coda.

  • IF_NOT_EXISTS: il routing a livello di coda si applica solo quando un'attività non contiene le proprie informazioni di routing. Usa questa impostazione se vuoi che la coda possa inviare attività a destinazioni diverse.
  • ALWAYS: il routing a livello di coda si applica sempre, anche se un'attività contiene le proprie informazioni di routing. Tutte le informazioni di routing impostate a livello di attività vengono sostituite dal routing a livello di coda. Utilizza questa impostazione se vuoi che le attività in una determinata coda utilizzino le stesse informazioni di routing.