risposta

10

Le code delle attività e Pub/Sub hanno diversi modelli di messaggistica, e quindi sono utili per cose diverse. Mentre Pub/Sub utilizza il modello di sottoscrizione editore, Task Queue raccoglie e distribuisce attività ai lavoratori.

L'utilizzo di Pub/Sub per distribuire le attività non sarebbe naturale come utilizzare la coda delle attività. Tutti gli abbonati a un argomento Pub/Sub visualizzano tutti i messaggi, mentre nella coda dei task, un messaggio viene utilizzato solo da un destinatario. Il rovescio della medaglia, le code di attività non sono progettate con lo scopo di trasmettere messaggi.

Per il momento, le code delle attività funzionano meglio su App Engine. Sebbene esista un'API REST di Coda attività sperimentale, le code di attività sono native e funzionano meglio su App Engine. Pub/Sub può essere utilizzato da qualsiasi luogo. Mentre le attività della coda di attività vengono distribuite automaticamente alle istanze di App Engine, è necessario eseguire un'ulteriore configurazione per l'utilizzo di Pub/Sub per le comunicazioni all'interno dell'applicazione.

Le code di attività forniscono anche funzionalità speciali, come il ritardo dei messaggi.

Edit:

Purtroppo sembra che spingere le code di attività non sono ancora pronti sul runtime Engine Node.js App.

La soluzione Pub/Sub indicata da Kamal sotto è un bel trucco per simulare il bilanciamento del carico basato su pull. Utilizzare Pub/Sub è probabilmente il modo giusto per andare se si è in OK con la modalità pull, anche se mi piacerebbe chiarire che è disponibile un'API taskqueue di AE (https://github.com/google/google-api-nodejs-client/tree/master/apis) per node.js quando si usa pull.

Una cosa da considerare se si utilizza pull o push è che il criterio di riprova è leggermente diverso. Gli elementi della coda di attività possono essere configurati per riprovare a tempo indeterminato, mentre penso che Pub/Sub smetterà di provare a recapitare un messaggio se non è stato riconosciuto dopo 7 giorni.

Altre cose da considerare se si decide di utilizzare la modalità Push PubSub sono:

  • Alcune funzionalità di coda compito AE come ritardare i messaggi o configuromg un messaggio con particolare tentativi o il tempo per vivere le impostazioni non sono disponibili in PubSub
  • È necessario conoscere gli endpoint per le istanze in cui si desidera eseguire attività dalla coda.

Su una nota separata (in risposta alla prima risposta di seguito), lo fa apparire come l'integrazione memcache è supportato. Ha una pagina dei documenti situata a https://cloud.google.com/appengine/docs/flexible/nodejs/caching-application-data.

+0

Quindi, node.js in esecuzione su App Engine ha un accesso facile e funziona perfettamente con le Code attività (push, non pull)? L'app di esempio di Google per le attività di lavoro con node.js utilizza Pub/Sub, motivo per cui lo chiedo. Non ho ancora visto i documenti Google sulla coda delle attività node.js o sull'integrazione di memcache. – philipfc

+0

È possibile caricare messaggi di bilanciamento su più abbonati. Tutti i messaggi _subscriptions_ su un pub/sottotitolo vedono tutti i messaggi. Tuttavia, più abbonati possono prelevare messaggi dalla stessa sottoscrizione, che generalmente recapiterà ciascun messaggio a uno di essi (sebbene si noti che Pub/Sub ha garantito il recapito _at-lease-once_). –

+0

Modificato la mia risposta originale per includere ulteriori informazioni. –