簡體   English   中英

Spring JMS和Oracle AQ

[英]Spring JMS and Oracle AQ

有沒有人讓Spring JMS使用Oracle AQ隊列?

我試圖根據這篇文章連接到AQ http://blog.nominet.org.uk/tech/2007/10/04/spring-jms-with-oracle-aq/

但我現在得到這個錯誤JMS-137:必須為具有ADT有效載荷的目的地指定有效載荷工廠

對此有任何幫助非常感謝

謝謝Damien

該錯誤向我表明它實際上正在工作但你沒有給它一個有效負載工廠來創建隊列中的對象。 您在創建接收器時這樣做。 在這種情況下,我的有效負載是XMLTYPE,所以我只使用其有效負載工廠:

queueReceiver = ((AQjmsSession) queueSession).
   createReceiver(queue, XMLType.getORADataFactory());

如果要對AnyDataType或用戶定義的有效負載進行排隊或取消排隊,則必須提供JDBC類型映射。

在您發布的鏈接中,最好的位置將在OracleAqDestinationFactoryBean.getObject中。

就我而言,我想對XMLL的Oracle 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);
}

請記住,對於AnyDataType Payload,您必須使用OCI JDBC驅動程序,因為瘦驅動程序不會這樣做。

有關自定義有效負載的更多信息,請訪問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

在“無彈簧”環境中,只需創建自己的消息使用者,如上面的博客文章中所述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM