Я бы хотел удалить из очереди непостоянное (= буферизованное) сообщение JMS из Oracle очереди AQ.
В PL / SQL все в порядке и работает, если я установил
L_DequeueOptions.VISIBILITY := DBMS_AQ.IMMEDIATE;
L_DequeueOptions.DELIVERY_MODE := DBMS_AQ.BUFFERED;
на дескрипторе.
Параметры энкейера установлены соответственно на IMMEDIATE и BUFFERED.
Тем не менее в Java коде я пытаюсь получить сообщение, используя JMS с javax. jms.QueueReceiver с использованием
QueueReceiver receiver = session.createReceiver(queue, "JMSDeliveryMode = 'PERSISTENT' or JMSDeliveryMode = 'NON_PERSISTENT'");
// and later on:
Message m = receiver.receive(conf.dequeueTimeout);
Я не участвую в транзакции на стороне dequeuer / получателя. Как я могу установить «видимость» в JMS? Любые идеи, почему я не получаю сообщения?
Чего мне не хватает?
Полезная нагрузка - sys.AQ $ _JMS_TEXT_MESSAGE, без сжатия или тому подобное.
btw: the Приложение, снимающее с очереди, работает с использованием постоянных сообщений ...
Обновление: код не работает и для постоянных сообщений, если я использую MessageSelector. Без селектора сообщений и постоянных сообщений это работает!