oracle AQ topic 拿不到消息
艾德 2009-04-15 11:31:55 遇到一个很奇怪的问题,对于oracle AQ的topic, 用下面的代码片断一直拿消息, 如果message是在循环过程中enqueue的,就会拿不到消息。如果消息在循环之前enqueue的就可以拿到
while (true){
msg = tSub.receiveNoWait();
if (msg != null) {
System.out.println("the message " + ((TextMessage) msg).getText());
} else {
System.out.println("====no message====");
Thread.sleep(1000);
}
}
另外,如果把tSub.receiveNoWait()换成tSub.receive(500)就可以拿到消息。
receiveNoWait是不是有什么猫腻在里面啊!j2ee spec上说这个API应该可以拿到消息当消息是immediately available (Receives the next message if one is immediately available.)这个immediately available何解呢?