JMS队列 - 发送和接收对象消息之间暂停10秒

时间:2015-08-27 11:22:04

标签: java jms activemq message-queue

我的服务器中有两个应用程序,并通过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秒钟,直到最后我得到"传入......"

这可能是什么原因?

0 个答案:

没有答案