Oracle AQ 的新手,但它似乎真的让我正在从事的项目变得容易。
我想创建一个包含多个持久订阅者的队列,但我在测试中发现,一旦有 2 个订阅者在收听,一切都会变慢。
当我有一个订阅者收听时,一切都很快。我在队列中创建新消息,几乎立即它们被听众消费。
然后我从另一台服务器添加另一个监听器。甲骨文立即放慢了速度。在队列中创建一条消息需要 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>