【问题标题】:rabbitListener execute task when no message in the queuerabbitListener 在队列中没有消息时执行任务
【发布时间】:2015-10-11 01:32:33
【问题描述】:

我们使用@RabbitListener 来监听队列,并在有消息时处理它们。但是,当队列为空时,我想执行一些报告任务,当我们的应用程序刚刚处理队列中的大量消息并且暂时没有消息时,就会发生这种情况。那是我要报告的时间。我怎么能用@RabbitListener 做到这一点?

这是我的代码:

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

【问题讨论】:

    标签: rabbitmq spring-amqp


    【解决方案1】:

    正如我answered your other question a few weeks ago 一样,AMQP(以及因此 Spring AMQP)中没有机制来通知消费者队列中当前没有消息。

    我们可以修改容器以触发ApplicationEvent 一次,当处理完消息后未找到消息时,但这需要修改框架。您的侦听器必须实现 ApplicationListener 才能获得这样的事件。

    如果您愿意,请随时打开New Feature JIRA Issue,我们或许可以查看一下。

    【讨论】:

    • 你是对的,我添加了额外的消息来标记工作的结束,并且在兔子监听器中,一旦它收到“工作结束”消息,它就会开始报告。我是 Spring AMQP 的新手,不确定这是否是一种常见情况,需要兔子侦听器在队列为空时能够做一些额外的工作,但认为提供它会是一个不错的功能。谢谢!
    猜你喜欢
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多