我必须将请求xml存储到数据库中。我正在使用header变量来做到这一点。
exchange.getIn().setHeader("inputRequestXml", body);
它正在为一些文件工作而我在某些文件的异常情况下,似乎是因为文件大小。
413 Request entity too large
所以我通过使用camel属性改变了实现,如下面的
exchange.setProperty("inputRequestXml", body);
现在我没有得到例外。但我担心它会在实际的PROD环境中处理更大的文件。所以我想知道,大小是多少 标头变量和属性的限制?
答案 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=false
和headerFilterStrategy