我的服务器中有两个应用程序,并通过ActiveMQ使用JMS在两者之间发送消息。我的两个应用程序如下
Web服务 - 接受HTTP请求,验证,然后发送消息以由其他应用程序执行。
Exec App - 接受对象消息,执行命令,将执行报告发送回Web服务以呈现给客户端。
My Exec应用程序在200ms内从Web服务接收消息,没有问题。但是,当我发送一个exec报告时,该消息可以在队列中挂起超过10秒,然后由Web服务接收。我对双方的消费者使用相同的代码,所以我不确定原因是什么。
这是我在Exec App中的消息生成器 -
public void createAndSendExecReport(OrderExecutionReport theReport){
try {
logger.debug("Posting exec report: " +theReport.getOrderId());
this.excChannelMessageProducer.send(createMessage(theReport));
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
[有一个createMessage方法将我的POJO转换为对象消息]
MessageListener listener = new MessageListener() {
@Override
public void onMessage(Message message) {
logger.debug("Incoming execution report");
try {
OrderExecutionReport report = (OrderExecutionReport)((ObjectMessage)message).getObject();
consumeExecutionReport(report);
} catch (Exception e) {
logger.error("Message handling failed. Caught: " + e);
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
logger.error(sw.toString());
}
}
};
我收到日志消息"发送执行报告" 然后在网络服务中没有任何内容,最多15秒钟,直到最后我得到"传入......"
这可能是什么原因?