Timer 如何仅在10分钟内轮询活动MQ?

Timer 如何仅在10分钟内轮询活动MQ?,timer,activemq,polling,timertask,Timer,Activemq,Polling,Timertask,我正在将活动MQ用于消息传递队列。我的要求是轮询队列10分钟,读取同时发出的所有消息,将它们写入文件,保存,然后再次读取队列10分钟,依此类推。 PFB规范 switch(waitIntervalSec) { case 0: // Wait indefinitely for a message msg = consumer.receive(); break;

我正在将活动MQ用于消息传递队列。我的要求是轮询队列10分钟,读取同时发出的所有消息,将它们写入文件,保存,然后再次读取队列10分钟,依此类推。 PFB规范

switch(waitIntervalSec) {
            case 0:
                // Wait indefinitely for a message
                msg = consumer.receive();
                break;
            case -1:
                // Don't wait at all.   
                msg = consumer.receiveNoWait();
                break;
            default:
                // Wait up to the specified amount of time for a msg
                msg = consumer.receive(waitIntervalSec);
                break;
        }
但我没有看到轮询效果,调试器没有在“msg=consumer.receive(waitIntervalSec);”这行等待10分钟。我猜这是因为消费者一读到第一条信息就崩溃了……是这样吗

所以我有其他的想法

  Integer endTimeInMiliSec = currentTimeInMiliSec + 10000; //add 10 minutes

  while(currentTimeInMiliSec < endTimeInMiliSec){ 
          msg = consumer.receive();
  }
整数endTimeInMiliSec=currentTimeInMiliSec+10000//再加10分钟
而(currentTimeInMiliSec
如何改进此代码?假设它会起作用是准确和安全的吗


共享您的输入plz。

接收
,超时等待一条消息或直到时间结束

在循环内的接收呼叫中有一些但不是无限的等待时间是个好主意

因此,您的第二个代码可以工作,但是轮询一段时间,比如几秒钟,然后收集所有轮询的消息,编写文件并继续循环