Oracle高级排队体验

时间:2012-01-23 14:51:21

标签: oracle integration messaging middleware oracle-aq

我正在考虑使用Oracle Advanced Queuing技术进行异步通信。我的目标是将它用于并发进程执行(异步PL / SQL过程调用)。

并发进程执行的当前遗留实现由Unix KornShell(ksh)脚本构成,我们从后端通过后台模式的SSH连接开始。它适用于我们,但我对这种解决方案不满意,因为:

  • 安全性(前端启动SSH连接并在后台模式下执行ksh脚本。我们的同事们注意到这种登录将在我们公司中受到限制。)
  • 维护(并非我们团队中的每个人都熟悉ksh脚本)
  • 技术的多样性(我试图通过专业知识和迁移努力来减少技术的多样性)
  • 日志记录(我们的后端系统登录到数据库日志表,并发执行日志部分记录到日志文件中)

通过从ksh迁移到数据库,我将能够提高系统的整体质量:

  • 安全性(不再有SSH连接,前端会向数据库发送消息,数据库消息监听器将对消息做出反应并异步执行过程)
  • 维护(我们使用PL / SQL,我们熟悉的地方)
  • 技术的多样性(通过下一次操作系统迁移,我们只需要迁移数据库对象和数据)
  • 记录(我们将完全使用我们的后端记录解决方案)

您如何看待我的考虑因素以及您使用Oracle Advanced Queuing的经历?特别是在稳定性,性能和维护方面?还有更好的选择吗?

2 个答案:

答案 0 :(得分:2)

我显然不知道你的项目的细节,但如果异步PL / SQL过程调用是你唯一的目标,那么使用DBMS_SCHEDULER可能更容易。您的程序可以通过调用PL / SQL的调度程序将作业提交到“立即运行”。在我看来,调度程序比AQ更容易使用。

答案 1 :(得分:2)

使用异步队列管理流程Oracle带来了优点和缺点:

优点

  1. 能够按类型创建特殊代码来管理流程 创建处理程序(JOB EVENT或APPLY PROCESS)来管理各种 子流程
  2. 轻松推出关闭DEQUEUE队列的整个流程类型。
  3. 管理MSG的优先级(创建Coda的参数) INSERT TIME或PRIORITY(Payload中的msg参数)管理 截止日期或经过时间的留言。
  4. 将范例与EVENT no POLLING
  5. 的解决方案对齐

    劣势

    1. 业务逻辑的负载都将在数据库上。
    2. 安装新PKG时,您需要停止队列(排队和取消)以重新启动指向PKG的HANDLER。
    3. 必须实施恢复系统msg错误处理。
    4. 我认为一个好的解决方案是在尾部ORACLE上使用CODE JMS(JMS提供程序),以便在JAVA上移动BL并使用包括Logging在内的语言的各种潜力。