是否有人有Spring JMS与Oracle AQ队列一起工作?Spring JMS和Oracle AQ
我试图根据本文 http://blog.nominet.org.uk/tech/2007/10/04/spring-jms-with-oracle-aq/
上连接到AQ,但现在我得到这个错误 JMS-137:有效载荷工厂必须为目的地的指定用ADT有效载荷
任何帮助,这是非常赞赏
感谢 达明
是否有人有Spring JMS与Oracle AQ队列一起工作?Spring JMS和Oracle AQ
我试图根据本文 http://blog.nominet.org.uk/tech/2007/10/04/spring-jms-with-oracle-aq/
上连接到AQ,但现在我得到这个错误 JMS-137:有效载荷工厂必须为目的地的指定用ADT有效载荷
任何帮助,这是非常赞赏
感谢 达明
该错误指示我,它实际工作但你并没有给它一个有效负载工厂来创建队列中的对象。你在创建接收器的时候这样做。在这种情况下,我的有效载荷是XMLTYPE,所以我只是用它的有效载荷工厂:你当你想连接队列或取消排队AnyDataType或用户自定义的有效载荷提供一个JDBC类型映射
queueReceiver = ((AQjmsSession) queueSession).
createReceiver(queue, XMLType.getORADataFactory());
。
在您发布的链接中,最好的地方是在OracleAqDestinationFactoryBean.getObject中。
就我而言,我希望去排队它们的XMLType的甲骨文的LCR,所以我不得不做的的getObject
public Object getObject() throws Exception {
QueueConnection queueConnection = connectionFactory.createQueueConnection();
AQjmsSession session = (AQjmsSession) queueConnection.createQueueSession(true,
Session.SESSION_TRANSACTED);
Map map = session.getTypeMap();
map.put("SYS.XMLTYPE", Class.forName("oracle.xdb.XMLTypeFactory"));
return session.getQueue(queueUser, queueName);
}
记住,你必须使用OCI JDBC驱动程序AnyDataType载荷下,因为瘦身司机不会这样做。在这里定制的有效载荷
更多信息 http://download.oracle.com/docs/cd/B19306_01/server.102/b14257/aq_stage.htm#sthref2705
这是如果你使用Spring,你如何解决这个问题:http://blog.javaforge.net/post/30858904340/oracle-advanced-queuing-spring-custom-types
在“无弹性”环境刚刚创建自己的消息消费者像在描述上面的博客帖子。