我遇到了Camel路线的问题,我现在正试图解决这几天。
由于我不是这个技术问题的专家,可能会遗漏您需要知道的信息......
首先,我的路线的目标是通过端点连接到远程服务器,通过jaxb编组从xml请求请求xml响应。
此路线没有什么特别之处,如下所示:
routeX.from("direct:requeteObjects)
.setHeader("element")
.constant(element)
.to("bean:importStructureI2VGestionnaireImpl?method=sendRequestObjects)
.to(endpoint)
.to("bean:importGestionnaireImpl?method=" + getObjects)
服务器按部分发送响应:例如,我期待3000个对象,由30个对象的包接收。
我更新了创建请求“sendRequest”的方法并要求下一个对象。
在处理响应之后,我将此请求发送回端点,端点获取响应,该响应将发送到处理响应的getObjects方法。
一切顺利,我得到了我的回复。但在5个请求/响应之后,进入端点后,没有任何反应。调试代码,看起来我的路由中有一个循环,因为代码继续在AsyncProcessor类中,在进程方法中等等。没有日志,没有。它不会停止。
我不知道为什么会这样。我认为这可能是因为我使用相同的路线定义。所以我为每个请求创建了一个路由,停止并删除旧请求。有了这个,我得到了6个回复。但是,同样的问题也会发生。
我尝试设置上下文最大端点缓存大小和上下文最大缓存池大小,乘以默认值10。我检查了这些值是否被考虑在内:它们是。但是,我仍然遇到同样的问题。
此外,交换对象总是一个新对象,所以我的回复永远不会堆积在一个大的交换对象中。
你知道问题出在哪里吗?背景可能变得太大了吗?还是端点?我应该在哪里看?
感谢您的回答。如果您需要更多信息,我很乐意添加它。
PS:我尝试在本主题中应用答案:Camel route inside routeContext executing infinitely,但没有变化: - (