我们要求我们尝试使用Camel从activemq队列向oracle aq队列发送巨大的xml负载。
有效负载超过4000个字节。因此,Camel无法发送此消息,因为Oracleaq尝试将此消息转换为VARCHAR,其中限制为4000个字符。
那么,我们如何将这些巨大的有效负载传递给Oracle。我是否必须在驼峰中设置一些内容,以便将消息作为'CLOB'而不是'VARCHAR'移交给oracle?或者它是否需要在oracle方面完成?
答案 0 :(得分:1)
Apache Camel在camel-jms组件中使用Spring JMS,因此它支持JMS可以执行的操作。因此,如果Oracle AMQ有大约4000字节或其他的限制,那么您需要在Oracle端处理它。
基本上Camel使用JMS,您需要深入了解Oracle AMQ文档以找出其JMS互操作。
JMS有不同的消息类型:文本,字节,映射,对象等。对于XML,您可能需要使用字节或文本。您可以在Camel中的JMS端点上配置jmsMessageType以强制使用特定类型。如果没有,那么Camel根据消息体类型选择最合适的。例如string =>文字等。
Apache Camel的其他用户已经与Oracle AMQ集成,因此它应该是可能的。
答案 1 :(得分:0)
您可以在发送到Oracle之前尝试使用convertBodyTo方法:
答案 2 :(得分:0)
如果您使用Oracle AQ的“缓冲消息传递”功能,则大小不能超过4000字节,如规范中所述:
http://docs.oracle.com/cd/E11882_01/server.112/e11013/jm_create.htm#ADQUE2891
如果您没有使用缓冲消息传递,OracleAQ应自动处理转换为VARCHAR2或CLOB,具体取决于我理解的消息大小