Camel向OracleAQ发送消息问题

时间:2014-03-28 15:39:01

标签: java oracle jms apache-camel activemq

我们要求我们尝试使用Camel从activemq队列向oracle aq队列发送巨大的xml负载。

有效负载超过4000个字节。因此,Camel无法发送此消息,因为Oracleaq尝试将此消息转换为VARCHAR,其中限制为4000个字符。

那么,我们如何将这些巨大的有效负载传递给Oracle。我是否必须在驼峰中设置一些内容,以便将消息作为'CLOB'而不是'VARCHAR'移交给oracle?或者它是否需要在oracle方面完成?

3 个答案:

答案 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方法:

https://camel.apache.org/convertbodyto.html

答案 2 :(得分:0)

如果您使用Oracle AQ的“缓冲消息传递”功能,则大小不能超过4000字节,如规范中所述:

http://docs.oracle.com/cd/E11882_01/server.112/e11013/jm_create.htm#ADQUE2891

如果您没有使用缓冲消息传递,OracleAQ应自动处理转换为VARCHAR2或CLOB,具体取决于我理解的消息大小