Notifica di un'applicazione separata di un evento

2

Ho un'applicazione che esegue varie attività come un processo automatico.

Il mio cliente vorrebbe che io creasse un file in una determinata cartella per ogni attività come modo per segnalare quando ogni attività è completata. Preferiscono questo a un flag di database perché possono essere notificati dal file system piuttosto che eseguire continuamente il polling di una tabella di database.

Posso farlo, ma creare e cancellare file perché le bandiere sono goffe. C'è un approccio più elegante alla notifica di una terza parte di un evento?

    
posta TomDestry 03.07.2013 - 18:17
fonte

2 risposte

6

Le code di messaggi sono progettate per questo tipo di attività. ZeroMQ ha associazioni disponibili in molte lingue diverse e una pletora di informazioni sulla messaggistica in generale. Apache ha il loro progetto ActiveMQ e c'è anche RabbitMQ che utilizza il protocollo avanzato per la coda dei messaggi (AMQP) .

Quando usi un filesystem per questo tipo di attività, ti imbatterai in vari problemi. Se si lavora su windows / c # la classe FileSystemWatcher è nota per avere la sua giusta quota di problemi dove manca semplicemente gli eventi di modifica.

Al di là degli eventi mancanti vorrei anche sollevare la domanda al cliente sull'affidabilità. Se il sistema che sta monitorando il filesystem per le modifiche diminuisce, come si "rimetterà in moto" quando tornerà online? Con una coda di messaggi queste modifiche starebbero in una coda (beh, non devono stare in una coda da qualche parte ma possono esserlo) in attesa che il servizio ritorni e le elabori. Con un filesystem standard verrebbe lasciato lo stato corrente dei file e non si conoscono le modifiche precedenti ai flag.

    
risposta data 03.07.2013 - 18:29
fonte
2

MQTT potrebbe funzionare per te. Questo è un sistema di pubblicazione e sottoscrizione molto semplice e leggero. È stato inventato per dispositivi embedded, ma funziona bene in tutti i tipi di applicazioni.

Un utente di zillion su Facebook non può sbagliare, vero?

    
risposta data 03.07.2013 - 21:07
fonte

Leggi altre domande sui tag