Abbiamo un listener Java che legge i messaggi di testo da una coda in JBossMQ. Se dobbiamo riavviare JBoss, il listener non si ricollegherà e ricomincerà a leggere i messaggi. Riceviamo solo messaggi nel file di log dell'ascoltatore ogni 2 minuti dicendo che non è possibile connettersi. C'è qualcosa che non stiamo impostando nel nostro codice o in JBossMQ? Sono nuovo di JMS quindi qualsiasi aiuto sarà molto apprezzato. Grazie.Ricollegamento del listener JMS a JBossMQ
risposta
è necessario implementare nel vostro javax.jms.ExceptionListener codice client. Avrai bisogno di un metodo chiamato suException. Quando la connessione del client viene persa, dovresti ottenere una JMSException e questo metodo verrà chiamato automaticamente. L'unica cosa che devi cercare è se stai disconnettendo intenzionalmente da JBossMQ-- che genererà anche un'eccezione.
Alcuni codice potrebbe essere simile a questo:
public void onException (JMSException jsme)
{
if (!closeRequested)
{
this.disconnect();
this.establishConnection(connectionProps, queueName, uname, pword, clientID, messageSelector);
}
else
{
//Client requested close so do not try to reconnect
}
}
Nel codice "EstablishConnection", si sarebbe poi implementare un costrutto while(!initialized)
che contiene un try/catch all'interno di esso. Finché non sarai sicuro di aver collegato e sottoscritto correttamente, rimani all'interno del ciclo while prendendo tutto il JMS/Naming/ecc. eccezioni.
Abbiamo utilizzato questo metodo per anni con JBossMQ e funziona benissimo. Non abbiamo mai avuto problemi con i nostri client JMS che non si sono ricollegati dopo aver saltato JBossMQ o aver perso la nostra connessione di rete.
Si noti che è necessario utilizzare Connection # setExceptionListener (con almeno alcuni provider JMS) per registrare ExceptionListener. – Touko
mi raccomando di utilizzare il Spring abstractions for JMS such as the MessageListenerContainer a che fare con la riconnessione, transazioni e pool per voi. È sufficiente fornire un MessageListener e configurare MessageListenerContainer con ConnectionFactory e il contenitore fa il resto.
Se si è puramente un ascoltatore e si fa no altre chiamate JMS diverse dall'impostazione della connessione, quindi la risposta "gestore onException()" è corretta.
Se si esegue una JMS chiamate nel codice, usando solo onException() richiamata non è sufficiente. I problemi vengono inoltrati dal provider JMS per l'applicazione sia tramite un'eccezione su un metodo JMS chiamata o attraverso il callback onException(). Non entrambi.
Quindi, se si chiama i metodi JMS dal codice, dovrete anche per invocare che la logica riconnessione se si ottiene alcuna eccezione su quelle chiamate.
Un consiglio da esperienza personale. Aggiornamento a JBoss Messaging. L'ho visto in produzione per 4 mesi senza problemi. Ha un failover completamente trasparente - tra molte altre funzionalità.
Inoltre, se si utilizza Spring, è verycareful con JmsTemplate.
- 1. Contenitore listener messaggi JMS primaverile
- 2. Ricollegamento dell'emulatore a Eclipse
- 3. L'esecuzione del listener di messaggi JMS non è riuscita e nessun ErrorHandler è stato impostato
- 4. Android: Ricollegamento automatico dispositivi BLE
- 5. Accesso a MQ con JMS
- 6. Ricollegamento al dispositivo con pySerial
- 7. Disconnessione del segnale non chiamata sulla disconnessione/ricollegamento di Internet
- 8. Ricollegamento di pagine a un blocco note in GTK #
- 9. Elaborazione JMS efficace
- 10. Disconnessione dal weblogic JMS
- 11. Java JMS Messaging
- 12. Qual è lo scopo del listener in WebSphere MQ?
- 13. JMS - Passaggio da uno a più utenti
- 14. Transazione JMS
- 15. Differenza tra listener del mouse e listener di azioni?
- 16. Entity valid listener listener
- 17. Stop a swing Timer dall'interno del Listener di azioni
- 18. Aggiunta del listener di eventi Click a Pushpin
- 19. Come propagare il contesto di sicurezza primaverile a JMS?
- 20. equivalente JMS in .Net
- 21. aggiungi listener vs set listener
- 22. Eccezione JMS e ActiveMQ
- 23. Come si pubblica un argomento JMS con Spring JMS?
- 24. Impostazione del listener di offset su CollapsingToolbarLayout
- 25. Proprietà IsSelected del listener di trigger (Principiante)
- 26. C++ e JMS - come collegare i due?
- 27. Il listener del clic chiamato due volte
- 28. WebSphere MQ Low Latency Messaging - Ha un'API JMS (o JMS)?
- 29. Come disabilitare temporaneamente un listener di messaggi
- 30. Rimozione del listener di chiavi dal pannello
Buona domanda. Questo è qualcosa a cui tutti si imbattono, quindi è bello avere la discussione registrata. –