Oracle高级队列 - 订户邮件跟踪

时间:2016-07-21 20:24:03

标签: oracle oracle-aq

Oracle Advanced Queuing如何跟踪订阅者为多消费者队列出列的消息?

USER_QUEUE_SUBSCRIBERS表跟踪每个队列的订阅者。我找不到一个表/视图,虽然它跟踪给定队列的订户状态(例如,订户出列的最后一条消息是什么?)。

1 个答案:

答案 0 :(得分:2)

查询AQ$<your_queue_table>.MSG_STATEAQ$<your_queue_table>.MSG_STATE为每个消息的每个订户都有一个条目。

select queue, consumer_name, deq_txn_id, deq_time, deq_user_id, 
 user_data, msg_state
  from aq$MC_QUEUE_TABLE
  where queue = 'MC_QUEUE';

例如,我的队列表为MC_QUEUE_TABLE,队列为MC_QUEUE

MSG_STATE需要:

  • READY - 邮件已准备好处理,即延迟
  • 已保留已处理 - 消息已成功处理(出列),但在执行{retention_time为队列指定之前将保留在队列中{1}}已经到达。

假设我们有2条消息(msg1,msg2)和2个订阅者(sub1,sub2)。而且sub1已经将msg1队列化了。 结果我们将看到:

dbms_aqadm.create_queue

由于QUEUE USER_DATA MSG_STATE CONSUMER_NAME MC_QUEUE (msg1) READY SUB2 MC_QUEUE (msg2) READY SUB2 MC_QUEUE (msg1) PROCESSED SUB1 MC_QUEUE (msg2) READY SUB1 ,您可能无法看到已处理的消息。