Creazione di una coda per i servizi Web

1

Ho un programma in esecuzione che raccoglie i metadati dagli interni.

Ogni tanto viene redatto un sommario di questi dati (ogni 30 minuti circa) e il riepilogo viene pubblicato in un database.

Il riepilogo viene anche inviato a molte API dei servizi Web.

Sto cercando di evitare il problema del blocco di questo programma quando le API del servizio web scadono. Quindi sto pensando di creare una coda per elaborare queste richieste di servizi web.

Come dovrei creare questa coda? Con un database di qualche tipo? Potrebbe essere un programma che memorizza gli elementi in coda in memoria, suppongo. Esiste un processo standard per la creazione di una coda per le chiamate al servizio web?

    
posta bvpx 11.06.2015 - 23:36
fonte

2 risposte

2

Questo sembra un caso d'uso perfetto per Apache Kafka:

Each partition is an ordered, immutable sequence of messages that is continually appended to—a commit log. The messages in the partitions are each assigned a sequential id number called the offset that uniquely identifies each message within the partition. The Kafka cluster retains all published messages—whether or not they have been consumed—for a configurable period of time. For example if the log retention is set to two days, then for the two days after a message is published it is available for consumption, after which it will be discarded to free up space. Kafka's performance is effectively constant with respect to data size so retaining lots of data is not a problem.

Link ai documenti: link

    
risposta data 12.06.2015 - 03:34
fonte
0

Non sei sicuro del tuo ambiente di programmazione?

Su Windows ho usato MSMQ e una tabella di database per questo.

MSMQ è ovviamente un buon candidato perché è programmato per essere una coda e non una tabella di database.

Ma quando l'applicazione era in diretta, ho trovato che una tabella di database era più facile da monitorare. Lo strumento MSMQ predefinito era (in quel momento) un po 'limitato e una tabella di database è sempre facile da monitorare. Inoltre puoi scrivere qualsiasi progresso nello stesso record del database in modo da ottenere facilmente una panoramica dell'attività corrente in esecuzione.

Ma .... quando il tuo database non è in linea e, a causa di ciò, l'attività genera un'eccezione, non puoi scrivere quello stato nella tua 'coda' (essendo lo stesso database) quindi in questo caso è meglio usare una coda "reale".

    
risposta data 15.06.2015 - 13:46
fonte

Leggi altre domande sui tag