0
私はウサギのキューにあるメッセージの数を取得しようとしていて、テストでそのキューをパージしています。周りを見回すと、RabbitAdminを使用してカウントを取得する必要があると示唆していますが、これを私のテストにオートワイヤリングする方法は不明です。何か案は?スプリングブートrabbitmqキューカウント?
@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;
}
テストクラス:
@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();
}
}
ありがとう、それは魅力的でした – helpme7766