2015-10-11 46 views
0

我们使用@RabbitListener来侦听队列以及何时有消息处理它们。不过,当队列为空时,我想要执行一些报告任务,这发生在我们的应用程序刚刚在队列中处理了大量消息且暂时没有更多消息时发生。那是我想要报告的时间。我怎么用@RabbitListener做到这一点?当队列中没有消息时,rabbitListener执行任务

这里是我的代码:

@RabbitListener(queues = "${consumer.queue}", containerFactory = "ListenerContainerFactory") 
    public void handleMessage(Message message) { 
     processEvent(message); 
    } 

回答

1

正如我answered your other question a few weeks ago存在AMQP(因此春季AMQP)没有一种机制来通知消费者,目前有在队列中没有消息。

我们可以修改容器,在消息处理后没有消息时触发ApplicationEvent一次,但这需要修改框架。您的听众将不得不实施ApplicationListener才能获得此类活动。

随意打开New Feature JIRA Issue如果你愿意,我们也许可以看看它。

+0

你说得对,我添加了额外的信息来标记工作的结束,在兔子听众中,一旦收到'工作结束'信息,它就开始报告。我是春季AMQP的新手,不确定这是否是一种常见的情况,需要兔子监听者在队列为空时能够做一些额外的工作,但认为这将是一个很好的功能。谢谢! – user468587

相关问题