новичок в Oracle AQ, но, похоже, это действительно должно упростить проект, над которым я работаю.
Я хочу создать очередь с несколькими постоянными подписчиками, но я обнаружил в ходе тестирования, что все замедляется, когда слушают 2 подписчика.
Когда слушает один подписчик, все быстро. Я создаю новые сообщения в очереди, и почти мгновенно они потребляются слушателем.
Затем я добавляю другого слушателя с другого сервера. Мгновенно Oracle замедляется. Создание сообщения в очереди занимает более 60 секунд. Сообщение не будет использовано до тех пор, пока через несколько минут.
Мне интересно, есть ли намного больше накладных расходов, когда очередь многопользовательская? Это накладные расходы только при запуске сервера? Или он всегда будет там?
Я выполнил второй тест с использованием очереди для одного потребителя, и у меня не было этих проблем.
Возможно, я сделал что-то не так в конфигурации моего слушателя?
Вот так я настроил свою таблицу очередей:
EXEC dbms_aqadm.create_queue_table(queue_table=>'MY_QUEUE_TABLE',
queue_payload_type=>'sys.aq$_jms_text_message',
multiple_consumers=>TRUE);
А это моя конфигурация:
<jms:listener-container
connection-factory="AQjmsFactory"
container-type="default"
destination-type="durableTopic"
client-id="MY-ADAPTER"
acknowledge="transacted">
<jms:listener destination="MYA_INFO_QUEUE" ref="personUpdateListener" subscription="MYADAPTERJ"/>
<jms:listener destination="MYB_INFO_QUEUE" ref="courseUpdateListener" subscription="MYADAPTERJ"/>
</jms:listener-container>