错误数据涉及AQ队列维护的思考

名词解释

    AQ:Oracle DB的高级队列。用于解决多台服务读任务队列。
系统架构
                  enqueue     dequeue
   Table trigger   --->  AQ  <--------  Java Thread(多线程) 
数据错误:
  因为Trigger的业务逻辑或者源头的数据问题,导致大量的AQ生成,造成正常的数据消息排在队列后面。
   
后续使用AQ时注意:
  a.处理错误数据的过程:
       1.停 Trigger ,通过开关表或者 disable trigger.
       2.限制Java Thread访问,因为Java Thread是类似long polling的方式,一直block等待消息,在 timeout后才断开。 通过停应用,或调整Thread的sleep时间,或者配置文件的开关。
       3.truncate ta table。或者通过单独的procedure来消费无用的queue。
       4.恢复trigger,恢复应用。
       5.验证正确性。
  b.设计:
     1.Queue带优先级标志,这样可以通过逻辑消费掉无用的Queue。
     2.Java Thread的控制开关,可以通过定时读取配置文件来刷新开关标志。便于维护或处理问题时,断开于数据库的长连接。
     3.Trigger设置开关,便于堵住源头的数据进入AQ队列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值