hel*_*ava 9 spring rabbitmq spring-amqp
我使用Spring amqp 1.1版本作为我的java客户端.我有一个大约有2000条消息的队列.我想要一个检查此队列大小的服务,如果它是空的,它将发出一条消息,说"所有项目已处理".
我不知道如何获得当前的队列大小?请帮忙
我用Google搜索并找到了早期版本1.0中出现的类"RabbitBrokerAdmin".我认为它现在不存在于1.1中.
获取当前队列大小的任何指针?
小智 16
所以我知道这有点晚了,已经找到了一个解决方案,但这是另一种查看队列中消息计数的方法
此解决方案假定您正在使用spring rabbitmq框架并已在应用程序配置中定义了您的队列,并定义了以下标记
<rabbit:queue>
<rabbit:admin>
Run Code Online (Sandbox Code Playgroud)
java类:
public class QueueStatsProcessor {
@Autowired
private RabbitAdmin admin;
@Autowired
private List<Queue> rabbitQueues;
public void getCounts(){
Properties props;
Integer messageCount;
for(Queue queue : rabbitQueues){
props = admin.getQueueProperties(queue.getName());
messageCount = Integer.parseInt(props.get("QUEUE_MESSAGE_COUNT").toString());
System.out.println(queue.getName() + " has " + messageCount + " messages");
}
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用此解决方案来读取附加到队列的当前使用者 http://docs.spring.io/spring-amqp/docs/1.2.1.RELEASE/api/org/springframework/amqp/rabbit/core/RabbitAdmin html的#getQueueProperties(java.lang.String中)
小智 10
您可以使用RabbitAdmin实例从队列中获取详细信息,如下所示:
@Resource RabbitAdmin admin;
...
protected int getQueueCount(final String name) {
DeclareOk declareOk = admin.getRabbitTemplate().execute(new ChannelCallback<DeclareOk>() {
public DeclareOk doInRabbit(Channel channel) throws Exception {
return channel.queueDeclarePassive(name);
}
});
return declareOk.getMessageCount();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8079 次 |
最近记录: |