Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JMS队列-在发送和接收对象消息之间暂停10秒_Java_Jms_Activemq_Message Queue - Fatal编程技术网

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

Java JMS队列-在发送和接收对象消息之间暂停10秒,java,jms,activemq,message-queue,Java,Jms,Activemq,Message Queue,我的服务器中有两个应用程序,并通过ActiveMQ使用JMS在这两个应用程序之间发送消息。我的两个应用程序如下 Web服务—接受HTTP请求,验证,然后发送消息以供其他应用程序执行 Exec应用程序-接受对象消息,执行命令,将执行报告发送回web服务,以呈现给客户端 我的Exec应用程序在200毫秒内接收来自Web服务的消息,没有问题。但是,当我发送exec报告时,消息可能会在队列中挂起10秒以上,然后才被web服务接收。我对双方的消费者使用相同的代码,因此我不确定原因是什么 这是我在Exec应

我的服务器中有两个应用程序,并通过ActiveMQ使用JMS在这两个应用程序之间发送消息。我的两个应用程序如下

Web服务—接受HTTP请求,验证,然后发送消息以供其他应用程序执行

Exec应用程序-接受对象消息,执行命令,将执行报告发送回web服务,以呈现给客户端

我的Exec应用程序在200毫秒内接收来自Web服务的消息,没有问题。但是,当我发送exec报告时,消息可能会在队列中挂起10秒以上,然后才被web服务接收。我对双方的消费者使用相同的代码,因此我不确定原因是什么

这是我在Exec应用程序中的消息生成器-

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());
                }
            }
        };
我收到日志消息“发送执行报告” 然后,web服务中没有任何内容,直到15秒后,我最终得到“传入…”


这可能是什么原因

确保Exec应用程序上有足够的MDB运行,以便它们能够处理负载

确保Exec应用程序上有足够的MDB运行,以便它们能够处理负载

您的activeMQ是否使用某种调度?您的activeMQ是否使用某种调度?