Una coda è un concetto di livello superiore rispetto a un flusso. Gli elementi di base di una coda sono un messaggio / oggetto, che è una struttura dati coerente (tipizzata tipicamente) che può essere interpretata dal consumatore da sola. D'altra parte, alla base di un stream , ci sono (di solito a dimensione fissa) bit / byte / caratteri, che, di per sé, sono generalmente privi di significato per l'applicazione. Una sequenza di questi caratteri può comporre un "messaggio", ma un'API di flusso lo lascia all'applicazione per dividere la sequenza di caratteri in blocchi sensibili.
Un'API Stream solitamente consente anche letture e scritture parziali, se i buffer del flusso sono pieni e l'altro lato non sta leggendo / scrivendo; le applicazioni che gestiscono le code di solito si aspettano che la coda le gestisca internamente.
Una coda può essere implementata su uno stream, ciò avviene implementando la struttura dei messaggi. Ad esempio, TCP fornisce un'interfaccia di flusso, HTTP è costruito su TCP e aggiunge telegrammi di messaggi usando la codifica di trasferimento Content-Length / Chunked. Gli utenti di un'API di connessione HTTP sono astratti dall'affrontare lo splitting del flusso di connessioni HTTP alle richieste HTTP.
D'altra parte, in genere, ha meno senso implementare un'API di streaming su una coda, poiché la gestione del frame dei messaggi aggiunge un sovraccarico non necessario.