Flussi di testo Unix da utilizzare come code di messaggi


0

La filosofia UNIX suggerisce che abbiamo creato molti programmi semplici che fanno bene una cosa e che li facciamo con flussi di testo. Cioè, i canali di input / output standard sono sufficienti mezzi di messaggistica.

I programmi della console non possono solo essere convogliati insieme, ma possono anche essere indirizzati a un file. In questo modo, puoi essenzialmente mettere in coda i messaggi (testo nei file) per elaborazioni successive. Questo sembra seguire un modello simile alle code dei messaggi ma senza tutta la raffinatezza.

Richard P. Gabriel suggerisce che un vantaggio chiave di Unix era che incorporava una filosofia progettuale che lui definiva "peggio è meglio", in cui la semplicità dell'interfaccia e dell'implementazione sono più importanti di qualsiasi altro attributo del sistema, inclusa la correttezza, coerenza e completezza.

Dal mio punto di vista, i flussi di testo forniscono un canale di comunicazione il più semplice possibile. Ciò sembrerebbe seguire la filosofia del peggio è meglio. Non potremmo quindi utilizzare le applicazioni della console e i file scritti nel file system come coda di messaggi di un uomo povero? E se è così, qualcuno ha adottato e preferito con successo questo approccio? Mi chiedo semplicemente quanto sia pratico / fattibile sostituire l'elaborazione del flusso di testo con le code dei messaggi.


1
Bene, che dire di named pipe? Penso che abbia il vantaggio di avere un processo di lettura e uno di scrittura durante l'utilizzo dei file è soggetto a problemi di esclusione reciproca.
slhck,

Vuoi dire qualcosa di simile command > fooe poi guardare come messaggi vengono a file foocon tail -f foo?
terdon,

Stavo pensando che il messaggio sarebbe stato intercettato da un file tramite una sorta di processo di polling.
Mario

Anche le pipe nominate sembrano buone. È qualcosa che non avevo mai visto prima.
Mario

Risposte:


1

Molti server di posta utilizzano file su disco per la loro coda. Exim conserva ogni e-mail in un file insieme a un altro file di metadati. Il vantaggio principale di questo è la resistenza agli arresti anomali: la coda sopravvive a un arresto anomalo e al riavvio.

I file di solito saranno più lenti rispetto all'utilizzo di un sistema di accodamento dei messaggi come 0MQ e ci sono problemi di efficienza (come si fa a sapere quando un nuovo messaggio è entrato nella coda?), Ma per le applicazioni di piccole dimensioni o quelle in cui si desidera una coda permanente può funzionare bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.