import Ġcom . rabbitmq . client .* Ċ import Ġjava . util .* ĊĊ Ċ class ĠReceive Log Header Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX CHANGE _ NAME Ġ= Ġ" header _ test " ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain ( argv : ĠArray < String >) Ġ{ ĊĠĠĠ Ġif Ġ( argv . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠSystem . err . println (" Usage : ĠReceive Logs Header Ġqueue Name Ġ[ headers ] ...") ĊĠĠĠĠĠĠĠ ĠSystem . exit ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġfactory Ġ= ĠConnection Factory () ĊĠĠĠ Ġfactory . host Ġ= Ġ" localhost " ĊĠĠĠ Ġval Ġconnection Ġ= Ġfactory . new Connection () ĊĠĠĠ Ġval Ġchannel Ġ= Ġconnection . create Channel () ĊĊĠĠĠ Ġchannel . exchange Declare ( Receive Log Header . EX CHANGE _ NAME , ĠBuiltin Exchange Type . HEADERS ) ĊĊĠĠĠ Ġ// ĠThe ĠAPI Ġrequires Ġa Ġrouting Ġkey , Ġbut Ġin Ġfact Ġif Ġyou Ġare Ġusing Ġa Ġheader Ġexchange Ġthe ĊĠĠĠ Ġ// Ġvalue Ġof Ġthe Ġrouting Ġkey Ġis Ġnot Ġused Ġin Ġthe Ġrouting . ĠYou Ġcan Ġreceive Ġinformation ĊĠĠĠ Ġ// Ġfrom Ġthe Ġsender Ġhere Ġas Ġthe Ġrouting Ġkey Ġis Ġstill Ġavailable Ġin Ġthe Ġreceived Ġmessage . ĊĠĠĠ Ġval Ġrouting Key From User Ġ= Ġ" our Test Routing Key " ĊĊĠĠĠ Ġ// ĠArgument Ġprocessing : Ġthe Ġfirst Ġarg Ġis Ġthe Ġlocal Ġqueue Ġname , Ġthe Ġrest Ġare ĊĠĠĠ Ġ// Ġkey Ġvalue Ġpairs Ġfor Ġheaders . ĊĠĠĠ Ġval Ġqueue Input Name Ġ= Ġargv [ 0 ] ĊĊĠĠĠ Ġ// ĠThe Ġmap Ġfor Ġthe Ġheaders . ĊĠĠĠ Ġval Ġheaders Ġ= ĠHashMap < String , ĠAny >() ĊĊĠĠĠ Ġ// ĠThe Ġrest Ġof Ġthe Ġarguments Ġare Ġkey Ġvalue Ġheader Ġpairs . Ġ ĠFor Ġthe Ġpurpose Ġof Ġthis ĊĠĠĠ Ġ// Ġexample , Ġwe Ġare Ġassuming Ġthey Ġare Ġall Ġstrings , Ġbut Ġthat Ġis Ġnot Ġrequired Ġby ĠRabbit MQ ĊĠĠĠ Ġ// ĠNote Ġthat Ġwhen Ġyou Ġrun Ġthis Ġcode Ġyou Ġshould Ġinclude Ġthe Ġx - match Ġheader Ġon Ġthe Ġcommand ĊĠĠĠ Ġ// Ġline . ĠExample : ĊĠĠĠ Ġ// ĠĠĠ Ġjava Ġ- cp Ġ$ CP ĠReceive Logs Header Ġtest Queue 1 Ġ Ġx - match Ġany Ġheader 1 Ġvalue 1 ĊĠĠĠ Ġvar Ġi Ġ= Ġ 1 ĊĠĠĠ Ġwhile Ġ( i Ġ< Ġargv . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġheaders [ argv [ i ]] Ġ= Ġargv [ i Ġ+ Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġprintln (" Binding Ġheader Ġ" Ġ+ Ġargv [ i ] Ġ+ Ġ" Ġand Ġvalue Ġ" Ġ+ Ġargv [ i Ġ+ Ġ 1 ] Ġ+ Ġ" Ġto Ġqueue Ġ" Ġ+ Ġqueue Input Name ) ĊĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġqueue Name Ġ= Ġchannel . queue Declare ( queue Input Name , Ġtrue , Ġfalse , Ġfalse , Ġnull ). queue ĊĠĠĠ Ġchannel . queue Bind ( queue Name , ĠReceive Log Header . EX CHANGE _ NAME , Ġrouting Key From User , Ġheaders ) ĊĊĠĠĠ Ġprintln (" Ġ[* ] ĠWaiting Ġfor Ġmessages . ĠTo Ġexit Ġpress ĠCTRL + C ") ĊĊĠĠĠ Ġval Ġconsumer Ġ= Ġobject Ġ: ĠDefault Consumer ( channel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Delivery ( consumer Tag : ĠString , Ġenvelope : ĠEn velope , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperties : ĠAMQP . Basic Properties , Ġbody : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠString ( body , Ġcharset (" UTF - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println (" Ġ[ x ] ĠReceived Ġ'" Ġ+ Ġenvelope . routing Key Ġ+ Ġ" ': '" Ġ+ Ġmessage Ġ+ Ġ"' ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġchannel . basic Consume ( queue Name , Ġtrue , Ġconsumer ) Ċ } Ċ