Sto provando RabbitMQ con this collegamento Python.Come impostare il rilevamento del timeout su un server RabbitMQ?
Una cosa che ho notato è che se uccido un utente non pulito (emulando un programma bloccato), il server penserà che questo utente è ancora lì da molto tempo. Il risultato di questo è che ogni altro messaggio verrà ignorato.
Per esempio, se si uccide un tempo di consumo 1 e ricollega, poi 1/2 messaggi verranno ignorati. Se uccidi un altro utente, i 2/3 messaggi verranno ignorati. Se uccidi un terzo, i messaggi 3/4 saranno ignorati e così via.
Ho provato ad attivare i riconoscimenti, ma non sembra essere d'aiuto. L'unica soluzione che ho trovato è quella di arrestare manualmente il server e resettarlo.
C'è un modo migliore?
come ricreare questo scenario
Run RabbitMQ.
Annulla archiviazione this library.
Scarica il consumatore ed editore here. Eseguire amqp_consumer.py due volte. Esegui amqp_publisher.py, inserendo alcuni dati e osservando che funziona come previsto. I messaggi vengono ricevuti in stile round robin.
Uccidi uno dei processi di consumo con kill -9 o task manager.
Ora, quando si pubblica un messaggio, il 50% dei messaggi saranno persi.
Ho aggiornato la mia risposta. –
Non riesco a riprodurre questo. Quale versione di linux stavi usando –
Buona domanda - questo è un problema critico se si esegue dietro un firewall o un dispositivo di bilanciamento del carico IP che cade i socket inutilizzati dopo N secondi, perché né RabbitMQ né il client saranno mai informati che il socket è andato via fino a quando non provano ad usarlo. –