我正在使用返回来自另一个进程的结果的Camel代理。在20000毫秒等待回复消息后发生骆驼JMS代理超时
public interface DataProcessingInterface {
public List<ResponseData> processPreview(ClientData criteria, Config config);
}
,这是配置的链路这
<camel:proxy
id="processPreviewProxy"
serviceInterface="model.jms.DataProcessingInterface"
serviceUrl="jms:queue:processPreview"/>
但有时其他过程需要很长时间才能返回结果,我有得到超时异常
TemporaryQueueReplyManager - Timeout occurred after 20000 millis waiting for reply message with correlationID [Camel-ID-PC01-2661-1367403764103-0-15]. Setting ExchangeTimedOutException on (MessageId: ID-PC01-2661-1367403764103-0-17 on ExchangeId: ID-PC01-2661-1367403764103-0-16) and continue routing.
怎么办我告诉骆驼等到响应准备就绪。如果这需要多长时间,它应该永远持续下去。客户端在不同的线程中进行管理,因此它所花费的时间不会影响客户端。
也有可能重新建立连接如果TimeoutException被抛出,所以我可以继续等待?
感谢您的反馈意见。我认为“永远”是“不是一个好策略”。我将结合超时与ExceptionHandler再次重试请求。比永远等待更聪明多了。 tx – 2013-05-02 08:48:55
对于“服务器/应用程序重新启动仍然会使请求失败”+1。 – techuser 2013-05-02 13:46:02