【发布时间】:2017-09-04 07:01:26
【问题描述】:
在 Spring AMQP 项目中,我想在 RabbitMQ 中实时获取某个队列中的消息数量(根据该消息数量做出决定)(我无法使用管理插件)。 基本配置是这样的:
@Bean(name="managementServerHandler")
public ManagementServerHandler managementServerHandler(){
return new ManagementServerHandler();
}
@Bean
public MessageListenerAdapter broadcastManagementServerHandler() {
return new MessageListenerAdapter(managementServerHandler(), "handleMessage");
}
@Bean(name="broadcastManagementMessageListenerContainer")
public SimpleMessageListenerContainer broadcastManagementMessageListenerContainer()
{
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(_connectionFactory());
container.setQueueNames( REQUEST_MANAGEMENT_QUEUE );
container.setMessageListener(broadcastManagementServerHandler());
container.setAcknowledgeMode(AcknowledgeMode.AUTO);
container.setAutoDeclare(true);
container.setAutoStartup(true);
container.setConcurrentConsumers(1);
container.setRabbitAdmin((RabbitAdmin)_amqpAdmin());
container.setPrefetchCount(50);
container.setDeclarationRetries(3);
container.setMissingQueuesFatal(true);
container.setFailedDeclarationRetryInterval(1000);
container.setRecoveryInterval(400);
return container;
}
“ManagementServerHandler”所在的位置:
public class ManagementServerHandler implements ServletContextAware, MessageListener
{
@Override
public void onMessage(Message msg)
{....}
}
我需要 onMessage 方法中的排队消息数,但我找不到方法。 我问了这个问题,但是不知道怎么获取AMQP通道:
谢谢!
【问题讨论】:
-
有关更多信息,我需要来自另一个队列的消息数,而不是来自容器正在侦听的队列的消息数。我已经用“channel.messageCount (your_queue)”试过了,但它总是返回零。
标签: spring-amqp