/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 - 2 0 2 1 ĠCloud opt Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġnet . cloud opt . next . event bus . provider Ċ Ċ import Ġio . lett uce . core . pubsub . Redis Pub Sub Adapter Ċ import Ġio . vertx . core . json . JsonObject Ċ import Ġnet . cloud opt . next . core . Worker . await Ċ import Ġnet . cloud opt . next . core . Worker . global Ċ import Ġnet . cloud opt . next . event bus . EventBus Manager Ċ import Ġnet . cloud opt . next . event bus . EventListener Ċ import Ġnet . cloud opt . next . json . Json er . to JsonObject Ċ import Ġnet . cloud opt . next . json . Json er . toJson String Ċ import Ġnet . cloud opt . next . logging . Logger Ċ import Ġnet . cloud opt . next . redis . Redis Manager Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . full . create Instance Ċ Ċ class ĠRedis MQ Provider Ġ: ĠEvent Bus Provider Ġ{ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ ĠRedis Manager . addListener ( Redis EventBus Listener ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġconsumer ( address : ĠString , Ġlistener : ĠK Class < EventListener >) Ġ{ ĊĠĠĠĠĠĠĠ ĠRedis Manager . subscribe ( address ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsend ( address : ĠString , Ġmessage : ĠJsonObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Redis Ġm q Ġdoes Ġnot Ġsupport Ġindividual Ġconsumption , Ġonly Ġpublish ï¼ģ ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġpublish ( address : ĠString , Ġmessage : ĠJsonObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġawait Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRedis Manager . publish Sync ( address , Ġmessage . toJson String ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠRedis EventBus Listener Ġ: ĠRedis Pub Sub Adapter < String , ĠString >() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogger . getLogger ( Redis EventBus Listener :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmessage ( channel : ĠString , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġglobal Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( EventBus Manager . event Listener List . containsKey ( channel )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus Manager . event Listener List [ channel ]?. create Instance ()?. listener ( message . to JsonObject ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsubscribed ( channel : ĠString , Ġcount : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" Subscribe Ġ$ channel Ġtopic Ġto Ġredis Ġpub / sub ĠSuccess .") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġun subscribed ( channel : ĠString , Ġcount : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" Un subscribe Ġ$ channel Ġtopic Ġto Ġredis Ġpub / sub ĠSuccess .") ĊĠĠĠ Ġ} Ċ Ċ }