我正在尝试在 onMessage 方法中使用消息,因为我希望在一个事务中使用多条消息以提高性能。
但
Message message = consumer.receive();
返回空值。它甚至不会阻塞。买为什么?它必须被阻止,直到它收到消息,不是吗?
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void onMessage(Message message) {
QueueConnection queueConnection = null;
queueConnection = qcf.createQueueConnection();
queueConnection.start();
queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = queueSession.createQueue(sessionConnParams.toString());
consumer = queueSession.createConsumer(queue);
// it works in cycle
System.out.println("before receive");
Message message = consumer.receive();
System.out.println("after receive");
if (message == null) {
System.out.println("no messages");
return;
}
// process message
} catch (Exception e) {
// process exception
} finally {
// close objects
}
}