Abbiamo un'applicazione Java autonoma che esegue qualche elaborazione in background su una macchina Debian. I lavori che deve gestire vengono inviati tramite i messaggi RabbitMQ.Qual è il modo migliore per terminare in modo sicuro un'applicazione java con i consumatori di RabbitMQ in esecuzione
Quando è necessario aggiornare l'applicazione java, è necessario interromperla (ucciderla). Ma dobbiamo essere sicuri che nessun consumatore stia attualmente elaborando un messaggio. Qual è, secondo la tua esperienza, il modo migliore per raggiungere questo obiettivo?
Abbiamo tentato di inviare un messaggio "SHUTDOWN" a un utente, ma non sembra possibile chiudere la coda o il canale ?! Blocca l'applicazione! Oppure esiste un'altra soluzione in cui, ad esempio, è possibile arrestare automaticamente l'applicazione, senza eseguire il comando kill in linux?
Thx per condividere la tua esperienza.
Saluti
È possibile utilizzare i messaggi durevoli e in questo caso si può ucciderlo quando vuoi perché i messaggi in arrivo o in uscita non andranno persi. Questo accoppiamento lento/com asincrono è una delle molte ragioni per cui le persone usano gli MQ. – Shahzeb
@Shahzeb Sì, usiamo messaggi duraturi e per alcuni dei lavori possiamo semplicemente ucciderlo e al riavvio rielabora i messaggi. Ma un particolare lavoro sta facendo un po 'di attività con una API esterna e non deve essere interrotto perché una volta nel processo non è possibile rieseguire la stessa richiesta. –