Utilizzo delle code in modalità pull in Java

Questa pagina fornisce una panoramica delle code pull nell'ambiente standard App Engine.

Nelle code push, le attività vengono inviate a un servizio worker in base alla configurazione della coda. Nelle code pull, il servizio worker deve richiedere le attività alla coda. La coda risponde consentendo a questo worker l'accesso esclusivo per elaborare l'attività per un periodo di tempo specificato, chiamato lease.

L'applicazione delega l'attività al servizio di coda di attività e poi il worker la prende in leasing
dal servizio di coda di attività

Utilizzando le code pull, puoi anche raggruppare le attività correlate utilizzando i tag e poi configurare il worker in modo che estragga più attività con un determinato tag contemporaneamente. Questo processo è chiamato batching.

Se un worker non può elaborare un'attività prima della scadenza del lease, può rinnovarlo o lasciarlo scadere, dopodiché un altro worker può acquisirlo. Una volta completato il lavoro associato a un'attività, il lavoratore deve eliminarla.

L'utilizzo delle code pull richiede che il codice gestisca alcune funzioni automatizzate nelle code push:

Scalabilità dei worker
Il tuo codice deve scalare il numero di worker in base al volume di elaborazione. Se il codice non gestisce lo scaling, rischi di sprecare risorse di calcolo se non ci sono attività da elaborare; rischi anche latenza se hai troppe attività da elaborare.
Eliminazione delle attività
Il codice deve anche eliminare esplicitamente le attività dopo l'elaborazione. Nelle code in modalità push, App Engine elimina le attività per te. Se il worker non elimina le attività della coda in modalità pull dopo l'elaborazione, un altro worker le elaborerà di nuovo. In questo modo si sprecano risorse di calcolo e si rischiano errori se le attività non sono idempotenti.

Le code pull nell'ambiente standard di App Engine vengono create impostando una proprietà in un file di configurazione denominato queue.xml.

Workflow coda in modalità pull

I worker che elaborano le attività dalle code pull devono essere definiti all'interno di un servizio in esecuzione nell'ambiente standard di App Engine.

Il flusso di lavoro è il seguente:

  1. Crea una coda pull utilizzando queue.xml.
  2. Crea attività e le aggiungi alla coda.
  3. Il worker che hai creato acquisisce il lease dell'attività utilizzando TaskQueue.
  4. App Engine invia i dati dell'attività al worker nella risposta del lease.
  5. Il worker elabora l'attività. Se l'attività non viene eseguita prima della scadenza del lease, il lavoratore può modificare la durata del lease. Se la concessione scade, l'attività potrà essere concessa a un altro lavoratore.
  6. Una volta elaborata correttamente un'attività, il worker la elimina.

Passaggi successivi