Domanda

Sto sviluppando un sito Web che recupererà i messaggi SMS che sono stati inviati a un gateway. Si accede al gateway tramite un'API, con le richieste nel seguente formato:

http://www.smsgateway.com/?login=myusername&password=mypassword&lasttime=1236164238

Nota che devo tenere traccia dell'ultima volta in cui i messaggi sono stati scaricati - vengono restituiti solo i messaggi ricevuti dopo tale orario.

Il problema è che c'è una differenza di tempo di circa 5 minuti tra i server! Ecco cosa sta succedendo:

- > L'utente invia SMS; il server gateway segna il timestamp alle 11.00 (diciamo che l'ora effettiva è 10.55)

- > Il mio server richiede tutti i messaggi inviati dalle 10.56 in poi - riceve il messaggio sopra e lo aggiunge al database

- > Il mio server richiede tutti i messaggi inviati dalle 10.58 in poi - riceve il messaggio sopra e lo aggiunge di nuovo, poiché è timestamp alle 11.00

- > Il mio server invia un'altra richiesta alle 11.00 - riceve il messaggio e lo aggiunge nuovamente al database

Quindi il mio problema è che l'unico messaggio originale viene ricevuto 3 volte.

La modifica dell'ora del mio server è fattibile, ma non dei server remoti.

Come posso gestirlo senza controllare per vedere se il messaggio è già nel database?

È stato utile?

Soluzione

Quando ricevi i messaggi inviati dal 10.56 in poi, Controlla l'ora dell'ultimo messaggio: Di '11:00, quindi La chiamata successiva viene inviata solo alle 11:00 perché hai già ricevuto fino alle 11:00 del tempo del server. In questo modo puoi ridurre i tuoi sondaggi. Anche questo funzionerà per quando il tempo del Server è nella condizione inversa.

ie) Controlla l'ora dell'ultimo messaggio:

nel prossimo sondaggio dal momento dell'ultimo messaggio.

Altri suggerimenti

La tua configurazione di base è vivace, anche se mantieni sincronizzati gli orologi dei due server perderai o raddoppierai i messaggi che condividono i timestamp (che possono essere molti o pochi a seconda della risoluzione del timestamp e del traffico dei messaggi).

Avrai bisogno di un'API diversa per accedere ai messaggi o dovrai richiedere messaggi sovrapposti richiedendo messaggi poiché latest_processed_timestamp - 1 e ordinare i duplicati dalla tua parte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top