package Ġcom . code lab . broker Ċ Ċ import Ġio . nats . streaming . Options Ċ import Ġio . nats . streaming . Streaming Connection Ċ import Ġio . nats . streaming . Streaming ConnectionFactory Ċ import Ġio . quarkus . runtime . Startup Ċ import Ġorg . eclipse . micro profile . config . Config Provider Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjavax . annotation . Post Construct Ċ import Ġjavax . annotation . Pre Destroy Ċ import Ġjavax . inject . Singleton ĊĊ Ċ @ Startup Ċ @ Singleton Ċ class ĠStan Service Ġ: ĠAuto Closeable Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠLOGGER : ĠLogger Ġ= ĠLoggerFactory . getLogger ( this :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġconnection : ĠStreaming Connection ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠLOGGER . info (" Starting Ġn ats Ġstreaming Ġconnection ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Post Construct ĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠConfig Provider . getConfig () ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠOptions . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. nats Url ( config . getValue (" CLUSTER _ URL ", ĠString :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cluster Id ( config . getValue (" CLUSTER _ ID ", ĠString :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. clientId ( config . getValue (" CLUSTER _ CLIENT _ ID ", ĠString :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠStreaming ConnectionFactory ( options ) ĊĠĠĠĠĠĠĠ Ġthis . connection Ġ= Ġfactory . create Connection () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Pre Destroy ĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġconnection . close () ĊĠĠĠ Ġ} Ċ Ċ } Ċ