Spring boot rabbitmq queue count? -
i trying count of number of messages on rabbit queue , purge queue in test. looking around seems suggest need use rabbitadmin counts unsure how autowire test? ideas?
@configuration public class myconfig { @value("${queue.producer.name}") private string queuename; @bean public jackson2jsonmessageconverter jsonmessageconverter(){ jackson2jsonmessageconverter con= new jackson2jsonmessageconverter(); return con; } @autowired private connectionfactory rabbitconnectionfactory; @bean public queue queue() { return new queue(queuename, true); } @bean public rabbittemplate rabbittemplate() { rabbittemplate r = new rabbittemplate(rabbitconnectionfactory); r.setmessageconverter(jsonmessageconverter()); r.setconnectionfactory(rabbitconnectionfactory); return r; } test class:
@runwith(springrunner.class) @springboottest public class testit { @resource private rabbitadmin admin; @test public void testqueue() throws ioexception, interruptedexception{ system.out.println(getqueuecount("publish")); admin.purgequeue("publish",true); } protected int getqueuecount(final string name) { amqp.queue.declareok declareok = admin.getrabbittemplate().execute(new channelcallback<amqp.queue.declareok>() { public amqp.queue.declareok doinrabbit(channel channel) throws exception { return channel.queuedeclarepassive(name); } }); return declareok.getmessagecount(); } }
if you're using following dependency in project...
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-amqp</artifactid> </dependency> ...then can leverage amqpadmin bean that's provided spring boot autoconfiguration within tests.
example:
@runwith(springrunner.class) @springboottest public class rabbitmqtests { @autowired private amqpadmin amqpadmin; @test public void purgequeue() throws exception { integer count = (integer) amqpadmin.getqueueproperties("publish").get("queue_message_count"); amqpadmin.purgequeue("publish", true); } } the example above shows how can message count particular queue.
Comments
Post a Comment