2012-01-23 55 views
2

我正在考虑使用Oracle高级队列技术进行异步通信。我的目标是将其用于并发进程执行(异步PL/SQL过程调用)。Oracle高级队列体验

并发进程执行的当前传统实现由Unix KornShell(ksh)脚本构成,我们通过后台模式下的SSH连接从前端开始。它工作正常的我们,但我不满意的那种,因为解决方案:

  • 安全(前端启动SSH连接,并在后台模式下执行ksh的脚本,从我们的同事,我注意到,这种登录。将在我公司的限制。)
  • 维护(不是每个人都我们的团队非常熟悉KSH脚本)
  • 多样性的技术(我尽量减少多样性技术,因为都知道如何和迁移工作)
  • 日志记录(我们的后端系统登录到数据库日志表中,并发执行日志部分记录到日志文件中)

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

  • 安全(无SSH连接了,前端将消息发送到数据库和数据库消息监听器将作出反应,消息和异步执行程序)
  • 维护(我们使用PL/SQL,我们都熟悉)
  • 多样性技术(通过下一代操作系统迁移,我们将只需要迁移数据库对象和数据)
  • 记录(我们将充分利用我们的后端记录解决方案)

你觉得我的考虑,什么是与Oracle高级队列您的经验?特别是在稳定性,性能和维护方面?有更好的选择吗?

回答

2

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

+0

哦,是的,谢谢这是一个很酷的替代执行同时执行。我会考虑我的考虑。 – eglobetrotter

2

流的异步的管理队列的Oracle与它的优点和缺点带来的:

优点

  1. 能够管理由类型创建即席代码在其上 创建处理程序(JOB EVENT或流申请流程)管理各种流程 子流程
  2. 易于推出关闭DEQUEUE队列的整个流程类型。
  3. 管理 INSERT TIME或PRIORITY(有效载荷中的msg参数)MSG的信息管理 带有截止日期或已过时间的消息。
  4. 对齐范式来解决EVENT没有POLLING

缺点

  1. 业务逻辑的负载都将在DB中。
  2. 安装新的PKG时,您需要停止队列(排队和DEQUEUEING)以重新启动指向PKG的HANDLER。
  3. 必须执行错误处理的msg恢复系统。

我认为一个好的解决办法是使用代码JMS(JMS提供者)的尾部ORACLE,以便在移动JAVA的BL和使用包括记录语言的各种潜能。