/* Ċ Ġ* ĠTencent Ġis Ġplease d Ġto Ġsupport Ġthe Ġopen Ġsource Ġcommunity Ġby Ġmaking ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġavailable . Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠTH L ĠA 2 9 ĠLimited , Ġa ĠTencent Ġcompany . Ġ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġis Ġlicensed Ġunder Ġthe ĠMIT Ġlicense . Ċ Ġ* Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠMIT ĠLicense Ġis Ġincluded Ġin Ġthis Ġfile . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠTerms Ġof Ġthe ĠMIT ĠLicense : Ċ Ġ* Ġ------------------------------------------------ --- Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ġassociated Ċ Ġ* Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ċ Ġ* Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ċ Ġ* Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ċ Ġ* Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT Ċ Ġ* ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN Ċ Ġ* ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , Ċ Ġ* ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE Ċ Ġ* ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . tencent . devops . dispatch . configuration Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . tencent . devops . common . event . dispatcher . pipeline . mq . MQ Ċ import Ġcom . tencent . devops . common . event . dispatcher . pipeline . mq . Tools Ċ import Ġcom . tencent . devops . dispatch . listener . Third Party Agent Listener Ċ import Ġorg . springframework . amqp . core . Binding Ċ import Ġorg . springframework . amqp . core . Binding Builder Ċ import Ġorg . springframework . amqp . core . Direct Exchange Ċ import Ġorg . springframework . amqp . core . Queue Ċ import Ġorg . springframework . amqp . rabbit . connection . ConnectionFactory Ċ import Ġorg . springframework . amqp . rabbit . core . Rabbit Admin Ċ import Ġorg . springframework . amqp . rabbit . listener . Simple Message Listener Container Ċ import Ġorg . springframework . amqp . rabbit . listener . adapter . Message Listener Adapter Ċ import Ġorg . springframework . amqp . support . converter . Jack son 2 Json Message Converter Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration Ċ Ċ @ Configuration Ċ class ĠDispatch MQ Configuration Ġ@ Autowired Ġconstructor () Ġ{ ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġrabbit Admin ( connection Factory : ĠConnection Factory ): ĠRabbit Admin Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRabbit Admin ( connection Factory ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġmessage Converter ( object Mapper : ĠObjectMapper ) Ġ= ĠJack son 2 Json Message Converter ( object Mapper ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç¬¬ä¸ī æĸ¹ æŀĦå»º æľº åĲ¯åĬ¨ äº¤ æį¢ æľº ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġthird Agent Dispatch Exchange (): ĠDirect Exchange Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdirect Exchange Ġ= ĠDirect Exchange ( MQ . EX CHANGE _ AGENT _ LIST ENER _ DIRECT , Ġtrue , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġdirect Exchange . is Delayed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġdirect Exchange ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġthird Agent Dispatch Start Queue () Ġ= ĠQueue ( MQ . QUEUE _ AGENT _ START UP ) ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġthird Agent Dispatch Start Queue Bind ( ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġthird Agent Dispatch Start Queue : ĠQueue , ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġthird Agent Dispatch Exchange : ĠDirect Exchange ĊĠĠĠ Ġ): ĠBinding Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBinding Builder . bind ( third Agent Dispatch Start Queue ). to ( third Agent Dispatch Exchange ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( MQ . ROUTE _ BUILD _ LESS _ AGENT _ START UP _ DISPATCH ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġthird Agent Dispatch Start Listener Container ( ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġconnection Factory : ĠConnection Factory , ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġthird Agent Dispatch Start Queue : ĠQueue , ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġrabbit Admin : ĠRabbit Admin , ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġthird Party Agent Listener : ĠThird Party Agent Listener , ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġmessage Converter : ĠJack son 2 Json Message Converter ĊĠĠĠ Ġ): ĠSimple Message Listener Container Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠMessage Listener Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthird Party Agent Listener , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthird Party Agent Listener :: listen Agent Start Up Event . name ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġadapter . setMessage Converter ( message Converter ) ĊĠĠĠĠĠĠĠ Ġreturn ĠTools . create Simple Message Listener Container By Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Factory Ġ= Ġconnection Factory , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue Ġ= Ġthird Agent Dispatch Start Queue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrabbit Admin Ġ= Ġrabbit Admin , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Consumer Min Interval Ġ= Ġ 1 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsecutive Active Trigger Ġ= Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconcurrency Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Concurrency Ġ= Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġadapter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefetch Count Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġthird Agent Dispatch Shutdown Queue () Ġ= ĠQueue ( MQ . QUEUE _ AGENT _ SHUT DOWN ) ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġthird Agent Dispatch Shutdown Queue Bind ( ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġthird Agent Dispatch Shutdown Queue : ĠQueue , ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġthird Agent Dispatch Exchange : ĠDirect Exchange ĊĠĠĠ Ġ): ĠBinding Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBinding Builder . bind ( third Agent Dispatch Shutdown Queue ). to ( third Agent Dispatch Exchange ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( MQ . ROUTE _ AGENT _ SHUT DOWN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġthird Agent Dispatch Shutdown Listener Container ( ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġconnection Factory : ĠConnection Factory , ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġthird Agent Dispatch Shutdown Queue : ĠQueue , ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġrabbit Admin : ĠRabbit Admin , ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġthird Party Agent Listener : ĠThird Party Agent Listener , ĊĠĠĠĠĠĠĠ Ġ@ Autowired Ġmessage Converter : ĠJack son 2 Json Message Converter ĊĠĠĠ Ġ): ĠSimple Message Listener Container Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠMessage Listener Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthird Party Agent Listener , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthird Party Agent Listener :: listen Agent Shutdown Event . name ) ĊĠĠĠĠĠĠĠ Ġadapter . setMessage Converter ( message Converter ) ĊĠĠĠĠĠĠĠ Ġreturn ĠTools . create Simple Message Listener Container By Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Factory Ġ= Ġconnection Factory , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqueue Ġ= Ġthird Agent Dispatch Shutdown Queue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrabbit Admin Ġ= Ġrabbit Admin , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Consumer Min Interval Ġ= Ġ 1 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsecutive Active Trigger Ġ= Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconcurrency Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Concurrency Ġ= Ġ 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġadapter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefetch Count Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ