是否可以在Oracle aq上实现指数重试延期



我想找出是否可以在Oracle AQ订阅上设置指数重试延迟

如果消息从AQ脱离并且无法处理,我想将Meesage滚动到队列并在1分钟后重试,然后2分钟和8小时

我使用的是发布和订阅方法,其中订阅是同一db中的PL/SQL过程(我不使用队列排队繁殖)

DBMS_AQADM.CREATE_QUEUE(
queue_name => l_queue_name,
queue_table => l_qtable_name,
max_retries => 3,
retry_delay => 1,
retention_time => 1209600);

重试延迟是一个恒定的数字,不是指数

有解决方法吗?

Advance排队没有指数重试,但我们可以像以下一样实现它。我们可以拥有一个主表,可以保留在队列中排队的所有消息的日志,并且在处理消息时,我们在该表上保持状态,我们将状态放在该表中同步,如果失败,我们将其设置为失败,所有失败的消息都可以我们通过Oracle计划的作业再次以您所需的间隔推动。在主日志表中,您需要维护所有在队列中推动所需的数据。在主日志表上实现AQ始终是一个好习惯,从长远来看,它也可以为您提供更好的调试选项。

最新更新