camel头变量和属性

时间:2017-12-05 07:25:11

标签: xml apache-camel

我必须将请求xml存储到数据库中。我正在使用header变量来做到这一点。

exchange.getIn().setHeader("inputRequestXml", body);

它正在为一些文件工作而我在某些文件的异常情况下,似乎是因为文件大小。

 413 Request entity too large

所以我通过使用camel属性改变了实现,如下面的

exchange.setProperty("inputRequestXml", body);

现在我没有得到例外。但我担心它会在实际的PROD环境中处理更大的文件。所以我想知道,大小是多少 标头变量和属性的限制?

2 个答案:

答案 0 :(得分:4)

Exchange属性没有限制,它只是一个HashMap,它将键/值存储在JVM的内存中。

消息头也只是一个HashMap,但是头是消息契约的一部分,并且根据您使用的Camel组件(传输),这些头可能正在使用,例如HTTP头,SOAP头,JMS头等。如果是这样,您可能会遇到由这些传输引起的标头限制。

您可以找到更多详细信息,最好阅读Camel in Action第2版中的免费第1章,其中介绍了重要的Camel概念。

答案 1 :(得分:2)

Apache Camel对标题和属性没有限制。它受Java堆大小的限制,与每个其他对象一样。

您发布的错误是HTTP错误,您可能是通过HTTP发送它而远程服务器返回此错误。 Apache Camel将Message#headers转换为HTTP标头,并且您已超出服务器上配置的大小限制。

请参阅:Maximum on http header values?

切换到属性工作,因为属性不通过HTTP传输。您可能对端点选项copyHeaders=falseheaderFilterStrategy

感兴趣