【发布时间】:2015-08-03 15:41:36
【问题描述】:
我有一个消息驱动的 bean,它从一个队列接收消息,处理它们,然后将消息发送到另一个队列,
onMessage(Message inputMessage) {
... Message processing stuff...
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Message outputMessage = session.createObjectMessage();
outputMessage.setJMSCorrelationID(uniqueId);
MessageProducer messageProducer = session.createProducer(outputQueue);
messageProducer.send(outputMessage);
... Some more processing...
QueueBrowser browser;
browser = session.createBrowser(outputQueue,
String.format("JMSCorrelationID='%s'", uniqueId);
}
然后,我检查队列中的 uniqueId,但消息尚未出现在队列中。试验了一下,发现只有在onMessage方法返回后,消息才会出现在输出队列中。
这是一个错误吗?有没有办法立即发送 outputMessage,这样我就可以确定在messageProducer.send(outputMessage) 之后消息确实出现在了 outputQueue 中?
【问题讨论】: