2017-08-18 1 views
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(); 
} 

} 

答えて

0

あなたは、あなたが提供していますAmqpAdmin豆を活用することができます... ...

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-amqp</artifactId> 
</dependency> 

をプロジェクトに、次の依存関係を使用している場合あなたのテスト内のスプリングブート自動設定によって。

例:

@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); 
    } 

} 

上記の例では、特定のキューのメッセージ数を取得する方法を示しています。

+0

ありがとう、それは魅力的でした – helpme7766

関連する問題