Puoi creare attività HTTP utilizzando il metodo BufferTask
o il metodo
CreateTask
. Questa pagina fornisce indicazioni su come scegliere tra i due metodi per la creazione di attività HTTP.
Il metodo BufferTask
consente di creare un'attività inviando una richiesta HTTP alla fila. Il metodo CreateTask
consente di creare un'attività costruendo l'oggetto
attività. Per la maggior parte dei casi d'uso, la creazione esplicita dell'oggetto attività non è necessaria. Il metodo migliore per creare attività dipende dal fatto che la coda abbia o meno il routing a livello di coda.
Prima di iniziare
Controlla il seguente elenco di casi d'uso per verificare se uno di questi si applica al tuo caso:
- Vuoi creare attività utilizzando l'API RPC o le librerie client (anziché l'API REST)
- Vuoi creare attività come oggetti Attività App Engine (anziché come gli oggetti attività più tipici per i target HTTP generici che possono o meno essere target App Engine)
Se uno di questi casi si applica al tuo caso, non devi scegliere il metodo di creazione delle attività perché è supportato un solo metodo (il metodo CreateTask
). Vai direttamente alla documentazione CreateTask
per il tuo tipo di attività:
Verificare se la coda ha il routing a livello di coda
Esegui il comando gcloud tasks queues describe nel terminale:
gcloud tasks queues describe QUEUE_NAME \ --location=LOCATION
Sostituisci quanto segue:
QUEUE_NAME
: il nome della coda.LOCATION
: la regione in cui si trova la coda. Se non è specificato e se è presente un'app associata, viene utilizzata la posizione dell'app App Engine del progetto.
Nell'output, cerca il campo
httpTarget
e controlla se è stato impostatouriOverride
.Se l'output include una riga per
uriOverride
con unhost
specificato, la coda ha il routing a livello di coda. Per scegliere il metodo di creazione delle attività, consulta la sezione Code di coda con routing a livello di coda.Se l'output non include una riga per
uriOverride
o se la descrizione diuriOverride
non mostra unhost
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 configura 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 delle attività dipende dai requisiti di routing dell'attività:
- La task ha gli stessi requisiti di instradamento specificati a livello di coda:
Utilizza
BufferTask
. Scopri come creare attività con il metodoBufferTask
. - L'attività ha requisiti di instradamento diversi da quelli specificati a livello di coda: imposta UriOverrideEnforceMode della coda su
IF_NOT_EXISTS
per assicurarti che l'instradamento a livello di coda venga applicato alle attività per le quali non esiste un instradamento (ad esempio le attivitàBufferTask
), ma rispetta l'instradamento delle attività che hanno le proprie specifiche di instradamento. Poi usaCreateTask
. Questo metodo ti consente di specificare il routing individuale per l'attività. Scopri come creare attività con il metodoCreateTask
.
Code senza routing a livello di coda
Per le code senza routing a livello di coda, crea le attività utilizzando il metodo CreateTask
(o
configura
il routing a livello di coda). Il metodo CreateTask
include la specifica del routing per
la task, che è obbligatoria per le code che non dispongono già di informazioni sul 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 le informazioni di routing predefinite per le attività in base alla coda in cui si trovano. Puoi specificare se vuoi che il routing predefinito sia applicato solo alle attività che non dispongono di informazioni di routing proprie o a tutte le attività.
Scegli il routing a livello di coda se vuoi:
- Creare attività con richieste HTTP standard (anziché con la costruzione dell'oggetto attività)
- Utilizzare una coda come buffer davanti a un servizio di destinazione
L'approccio per target
Il routing a livello di coda funziona meglio con le architetture che utilizzano una coda per ogni servizio di destinazione. Questo modello ti consente di:
- Gestire le attività in base al target (ad esempio, reindirizzare un gruppo di attività se il servizio di destinazione non è attivo)
- Invia tutte le attività in una coda allo stesso target
- Creare attività senza costruire esplicitamente l'oggetto attività utilizzando il metodo
BufferTask
Attivare e disattivare il comportamento di override a livello di coda
Dopo aver configurato il routing a livello di coda, puoi decidere quando viene applicato impostando 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. Utilizza questa impostazione se vuoi che la coda possa inviare attività a target diversi.ALWAYS
: il routing a livello di coda viene sempre applicato, anche se un'attività contiene le proprie informazioni di routing. Eventuali informazioni di instradamento impostate a livello di attività vengono sostituite dall'instradamento a livello di coda. Utilizza questa impostazione se vuoi richiedere alle attività di una determinata coda di utilizzare le stesse informazioni di instradamento.