gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:30:31 26 4
gpt4 key购买 nike

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

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

Exec App - 接受对象消息、执行订单、将执行报告发送回 Web 服务以呈现给客户端。

我的 Exec 应用程序在 200 毫秒内收到来自 Web 服务的消息,没有任何问题。但是,当我发送执行报告时,该消息可能会在队列中挂起 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());
}
}
};

我收到日志消息“正在发送执行报告”然后,在长达 15 秒的时间里,网络服务中没有任何内容,直到最后我收到“传入...”

这可能是什么原因造成的?

最佳答案

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

关于java - JMS 队列 - 发送和接收对象消息之间有 10 秒的暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32248055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com