sql >> Database teknologi >  >> RDS >> Oracle

Korrekt tilgang til at initialisere en asynkron JMS Listener og lade den køre uendeligt

Der er ingen grund til at køre en tråd for at oprette en JMS-forbruger og indstille dens beskedlytter. Hele pointen med en JMS besked lytter er at modtage besked asynkront (funktionalitet, som du ser ud til at forsøge at duplikere af en eller anden grund).

Du skal blot oprette JMS-forbrugeren og indstille beskedlytteren og derefter sikre, at forbrugeren ikke er lukket. Afhængigt af hvordan applikationen er skrevet, er det nogle gange nødvendigt at have en while loop for at sikre, at programmet ikke afsluttes og derfor lukker forbrugeren. Det gør din tråd ikke. Det lader forbrugeren falde uden for rækkevidde efter at have ventet på beskeder i 5 sekunder, hvilket betyder, at det vil blive opsamlet skrald, og jeg forventer, at det for de fleste JMS-implementeringer betyder, at det vil være lukket. Det kunne dog være værre end det. Ved ikke eksplicit at lukke forbrugeren og bare lade den falde uden for scope, kan du lækker forbrugere, hvilket i sidste ende ville forvirre din meddelelsesmægler. Dette er ikke kun sjusket programmering, men potentielt problematisk for andre brugere, der forsøger at indtage beskeder.




  1. MySQL vælg rækker, hvor venstre join er nul

  2. Bestem logik for MySQL Select - Reservationssystem

  3. Oracle rumlig søgning inden for afstand

  4. Hibernate OnDelete Cascade virker ikke for MySql, men virker på postgres og Ms-Sql