我试图计算兔子队列上的消息数量,然后在测试中清除队列。环顾四周,似乎表明我需要使用 RabbitAdmin 来获取计数,但不确定如何将其自动连接到我的测试中?有任何想法吗?
@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;
}
Run Code Online (Sandbox Code Playgroud)
测试类:
@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 …Run Code Online (Sandbox Code Playgroud) 我目前将我的兔子监听器注释设置为:
@RabbitListener(queues ="my-queue")
是不是可以从我的yaml文件中提取队列名称.我想这样做的原因是,我可以通过更改yaml文件中的队列名称将队列更改为测试队列以进行集成测试.看来注释必须接受一个常量字符串,有没有办法围绕这个?谢谢,