package Ġdev . ge ovan esh im iz u . order . app Ċ Ċ import Ġdev . ge ovan esh im iz u . order . domain . order .* Ċ import Ġdev . ge ovan esh im iz u . order . domain . out box .* Ċ import Ġdev . ge ovan esh im iz u . order . infra . db . Jdbc Out box Repository Ċ import Ġdev . ge ovan esh im iz u . order . infra . db . Jdbc Purchase Order Repository Ċ import Ġdev . ge ovan esh im iz u . order . infra . db . Json b Mapper Ċ import Ġdev . ge ovan esh im iz u . order . infra . messaging . Aws Properties Ċ import Ġdev . ge ovan esh im iz u . order . infra . messaging . S ns Publish Subscription Created Ċ import Ġdev . ge ovan esh im iz u . order . infra . messaging . Spring Event Purchase Order Listener Ċ import Ġdev . ge ovan esh im iz u . order . infra . messaging . Spring Event Subscription Listener Ċ import Ġorg . springframework . beans . factory . annotation . Value Ċ import Ġorg . springframework . cloud . aws . messaging . core . Notification Messaging Template Ċ import Ġorg . springframework . context . Application Event Publisher Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . jdbc . core . Jdbc Template Ċ import Ġorg . springframework . transaction . Platform Transaction Manager Ċ Ċ @ Configuration Ċ class ĠApp Config Ġ{ ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġpurchase Orders ( purchase Order Repository : ĠPurchase Order Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout box Repository : ĠOut box Repository ): ĠPurchase Orders Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPurchase Orders ( purchase Order Repository , Ġout box Repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġpurchase Order Repository ( jdbc Template : ĠJdbc Template , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Manager : ĠPlatform Transaction Manager ): ĠPurchase Order Repository Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJdbc Purchase Order Repository ( jdbc Template , Ġtransaction Manager ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġout box Repository ( jdbc Template : ĠJdbc Template , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjsonb Mapper : ĠJson b Mapper , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Manager : ĠPlatform Transaction Manager ): ĠOut box Repository Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJdbc Out box Repository ( jdbc Template , Ġjsonb Mapper , Ġtransaction Manager ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġout box Polling ( batch Delete And Publish Out box Messages : ĠOut box Polling Strategy ): ĠOut box Polling Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOut box Polling ( batch Delete And Publish Out box Messages ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġbatch Delete And Publish Out box Messages ( out box Repository : ĠOut box Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjsonb Mapper : ĠJson b Mapper , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Publisher : ĠApplication Event Publisher , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value ("\ ${ order - service . app . job . out box - polling . messages - to - delete }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages ToDelete : ĠInt ): ĠOut box Polling Strategy Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġpayload To Event Ġ= Ġobject Ġ: ĠOut box Message Payload To Event < Any > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( obj : ĠAny , Ġclazz : ĠClass < *> ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjsonb Mapper . from Any ( obj , Ġclazz ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠBatch Delete And Publish Out box Messages ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout box Repository Ġ= Ġout box Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayload To Event Ġ= Ġpayload To Event , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Publisher Ġ= Ġevent Publisher :: publish Event , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages ToDelete Ġ= Ġmessages ToDelete ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġpurchase Order Listener (): ĠPurchase Order Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSpring Event Purchase Order Listener ( Logging Purchase Order Listener ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġsubscription Listener ( publish Subscription Created : ĠPublish Subscription Created ): ĠSubscription Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSpring Event Subscription Listener ( Publishing Subscription Listener ( publish Subscription Created )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġpublish Subscription Created ( notification : ĠNotification Messaging Template , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaws Properties : ĠAws Properties ): ĠPublish Subscription Created Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠS ns Publish Subscription Created ( notification , Ġaws Properties ) ĊĠĠĠ Ġ} Ċ } Ċ