package Ġcom . github . ben jamin jacob berg . mq tool . ib mm q Ċ Ċ import Ġcom . github . ben jamin jacob berg . mq tool .* Ċ import Ġcom . github . ben jamin jacob berg . mq tool . Message Ċ import Ġcom . github . ben jamin jacob berg . mq tool . Message Consumer Ċ import Ġjava . util .* Ċ import Ġjavax . jms .* Ċ import Ġjavax . jms . Queue Ċ import Ġkotlin . collections . ArrayList Ċ Ċ open Ġclass ĠI bm Mq Message Consumer Ġ: ĠMessage Consumer , ĠI bm Mq ConnectionFactory () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġsc rape ( size : ĠInt , Ġconnection Information : ĠConnection Information ): ĠList < Message > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Factory : ĠConnection Factory Ġ= Ġconnection Factory ( connection Information ) ĊĠĠĠĠĠĠĠ Ġval Ġj ms Context : ĠJ MS Context Ġ= Ġconnection Factory . create Context () ĊĠĠĠĠĠĠĠ Ġval Ġdestination : ĠQueue Ġ= Ġj ms Context . create Queue (" queue :// /${ connection Information . queue }? target Client = 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġbrowser : ĠQueue Browser Ġ= Ġj ms Context . create Browser ( destination ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmessages : ĠMutable List < Message > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġenumeration Ġ= Ġbrowser . enumeration ĊĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( enumeration . hasMore Elements () Ġ&& Ġi Ġ< Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġenumeration . nextElement () Ġas Ġjavax . jms . Message ? ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody : ĠString Ġ= Ġmessage ?. getBody ( String :: class . java ) Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Ġ= ĠMessage Header ( message . jms Message ID , Ġmessage . jms Correlation ID , Ġ"${ Date ( message . jms Timestamp )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessages . add ( Message ( header , Ġbody )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbrowser . close () ĊĠĠĠĠĠĠĠ Ġj ms Context . close () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmessages ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinfo ( connection Information : ĠConnection Information ): ĠMessage Queue Info Response Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Factory : ĠConnection Factory Ġ= Ġconnection Factory ( connection Information ) ĊĠĠĠĠĠĠĠ Ġval Ġj ms Context : ĠJ MS Context Ġ= Ġconnection Factory . create Context () ĊĠĠĠĠĠĠĠ Ġval Ġdestination : ĠQueue Ġ= Ġj ms Context . create Queue (" queue :// /${ connection Information . queue }? target Client = 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġbrowser : ĠQueue Browser Ġ= Ġj ms Context . create Browser ( destination ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġdepth Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġenumeration Ġ= Ġbrowser . enumeration ĊĠĠĠĠĠĠĠ Ġwhile Ġ( enumeration . hasMore Elements ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenumeration . nextElement () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepth ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbrowser . close () ĊĠĠĠĠĠĠĠ Ġj ms Context . close () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠMessage Queue Info Response ( depth Ġ= Ġdepth ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpull ( jms Id : ĠString , Ġconnection Information : ĠConnection Information ): ĠMessage ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Factory : ĠConnection Factory Ġ= Ġconnection Factory ( connection Information ) ĊĠĠĠĠĠĠĠ Ġval Ġj ms Context : ĠJ MS Context Ġ= Ġconnection Factory . create Context () ĊĠĠĠĠĠĠĠ Ġval Ġdestination : ĠQueue Ġ= Ġj ms Context . create Queue (" queue :// /${ connection Information . queue }? target Client = 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġconsumer : ĠJ MS Consumer Ġ= Ġj ms Context . create Consumer ( destination , Ġ" J MS Message ID ='$ jms Id '") ĊĊĠĠĠĠĠĠĠ Ġval Ġj ms Message : Ġjavax . jms . Message ? Ġ= Ġconsumer . receive No Wait () ĊĠĠĠĠĠĠĠ Ġval Ġmessage : ĠMessage ? Ġ= Ġj ms Message ?. let Ġ{ ĠMessage ( Message Header ( it . jms Message ID , Ġit . jms Correlation ID , Ġ"${ Date ( it . jms Timestamp )} "), Ġit . getBody ( String :: class . java )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġconsumer . close () ĊĠĠĠĠĠĠĠ Ġj ms Context . close () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmessage ĊĠĠĠ Ġ} Ċ } Ċ