Spring JMS и Oracle AQ - PullRequest
       1

Spring JMS и Oracle AQ

4 голосов
/ 15 декабря 2010

Кто-нибудь получил Spring JMS для работы с очередью Oracle AQ?

Я пытаюсь подключиться к AQ на основе этой статьи http://blog.nominet.org.uk/tech/2007/10/04/spring-jms-with-oracle-aq/

, но теперь я получаю эту ошибку JMS-137: Фабрика полезной нагрузки должна быть указана для пунктов назначения с полезной нагрузкой ADT

Любая помощь с этим очень ценится

Спасибо Дэмиен

Ответы [ 3 ]

5 голосов
/ 15 декабря 2010

Эта ошибка указывает на то, что она действительно работает, но вы не предоставляете ей фабрику полезной нагрузки для создания объекта, выходящего из очереди.Вы делаете это при создании приемника.В этом случае моей полезной нагрузкой является XMLTYPE, поэтому я просто использую фабрику полезной нагрузки:

queueReceiver = ((AQjmsSession) queueSession).
   createReceiver(queue, XMLType.getORADataFactory());
1 голос
/ 29 января 2011

Вы должны предоставить карту типа JDBC, когда хотите добавить в очередь или удалить AnyDataType или определяемые пользователем полезные нагрузки.

Лучшее место для этого - в размещенной вами ссылке.OracleAqDestinationFactoryBean.getObject.

В моем случае я хотел снять очереди LCR Oracle с XMLType, поэтому мне пришлось сделать следующее в 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

0 голосов
/ 04 сентября 2012

Вот как вы можете решить эту проблему, если используете Spring: http://blog.javaforge.net/post/30858904340/oracle-advanced-queuing-spring-custom-types

В «беспружинной» среде просто создайте своего собственного потребителя сообщений, как описано в сообщении в блоге выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...