【问题标题】:@RabbitListener how to set frequency of receiving messages in annotation@RabbitListener 如何在注解中设置接收消息的频率
【发布时间】:2020-12-12 15:00:41
【问题描述】:

我正在使用 @RabbitListner 注释从 RabbitMq 队列接收消息。 如何让线程接收消息的频率不超过 1 秒?

@RabbitListener(queues = "message", priority = "3",concurrency = "2")
public void receiveCheck(RequestMessage message){
}

【问题讨论】:

    标签: java spring spring-boot rabbitmq


    【解决方案1】:

    你的任务有点奇怪。您不认为应该以不同的方式解决问题(也许您可以以一定的频率发送消息 - 1 条消息/秒)? 但如果你确定这是你需要的,你可以使用原始解决方案:

    @RabbitListener(queues = "message", priority = "3", concurrency = "2")
    public void receiveMessage(String message) throws InterruptedException {
        System.out.println("Received <" + message + ">" + " Message time: " + LocalDateTime.now());
        Thread.sleep(1000);
    }
    

    或者配合运算时间的计算:

    @RabbitListener(queues = "message", priority = "3", concurrency = "2")
    public void receiveMessageWithTimer(String message) throws InterruptedException {
        long start = System.currentTimeMillis();
        System.out.println("Received <" + message + ">" + " Message time: " + LocalDateTime.now());
        long finish = System.currentTimeMillis();
        long operationTime = finish - start;
        Thread.sleep(1000 - operationTime);
    }
    

    但在这种情况下,您应该记住并发级别 = 2。您将收到 2 条消息/秒。 对于只接收一条消息,您可以设置并发级别 = 1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多