2015-06-26 26 views
7

Recentemente ho aggiornato un server da ActiveMQ dalla versione 5.8 alla versione più recente (5.11.1). Da allora, ho notato in modo un po 'sporadico che i messaggi si accumulano in una particolare coda e non possono essere rimossi.ActiveMQ non disconnettere i messaggi Coda

La nostra architettura ha un produttore, un consumatore. Vedo che il consumatore è ancora connesso ma i messaggi si stanno accumulando dal produttore. La mia soluzione è stata quella di cancellare la coda tramite la console web. Dopodiché, vedo immediatamente che l'utente si ricollega e i messaggi iniziano a essere elaborati di nuovo.

Se è rilevante, in questo caso il produttore esegue NMS su .NET e l'utente esegue JMS su Java 1.7.

+0

Funzionerebbe se si disconnette/re-connec il consumatore? Cancellare la coda sembra essere una "soluzione bruteforce". – SubOptimal

+0

@SubOptimal buona domanda, in realtà non sono sicuro della risposta a questo. Non ho alcun gancio nell'applicazione per disconnettere/riconnettere il consumatore mentre l'applicazione è in esecuzione. Né so di un modo per scoprire che è in questo stato bloccato dal momento che dal suo punto di vista, i messaggi non stanno arrivando. – Ternary

+1

Non appena la comunicazione si è bloccata la prossima volta. È possibile modificare il livello di registrazione per il logger relativo alla classe 'org.apache.activemq.transport.TransportLogger' a' DEBUG' tramite l'interfaccia JMX utilizzando JConsole. Quindi dovresti vedere la comunicazione del broker. Forse questo spiegherebbe cosa accadrà. – SubOptimal

risposta

2

Quando l'utente è connesso alla coda, controllare il numero di messaggi non inviati nella coda dalla console Web. Se è più di zero e non cambia per molto tempo, significa che il tuo utente ha qualche problema nella lettura del messaggio di input.

Se il caso precedente è vero, potrebbe essere perché il produttore sta inviando file che non sono reclami jms.

+0

Questa è una buona cosa da provare, lo farò e riferirò. Grazie! – Ternary

+0

Per "numero di messaggi non salvati" intendi il "Numero di messaggi in attesa" nella console? Il valore che conosco è diverso da zero e se faccio clic sulla coda posso vedere il contenuto del messaggio e almeno il carico utile sembra valido e in linea con ciò che il produttore sta inviando. – Ternary

0

Di recente ho riscontrato questo problema durante la creazione di un'utilità per spostare tutti i messaggi da una coda all'altra.

ho potuto vedere che ero collegato alla mia istanza di AMQ, e ho potuto vedere l'ascoltatore che avevo creato, ma semplicemente non si muoverebbe da attesa al mio ascoltatore ...

avevo dimenticato di chiama Start() sulla mia connessione in coda. :/