Oracle 高级排队体验
我正在考虑使用Oracle高级队列技术进行异步通信。我的目标是将其用于并发流程执行(异步 PL/SQL 过程调用)。
当前并发进程执行的遗留实现由 Unix KornShell (ksh) 脚本组成,我们通过后台模式下的 SSH 连接从前端启动。它对我们来说工作得很好,但我对这种解决方案不满意,因为:
- 安全性(前端启动 SSH 连接并在后台模式下执行 ksh 脚本。从我们的同事那里我注意到这种登录将在我们公司受到限制.)
- 维护(并非我们团队中的每个人都熟悉 ksh 脚本)
- 技术多样性(由于技术知识和迁移工作,我尝试减少技术多样性)
- 日志记录(我们的后端系统记录到数据库日志表中,并发执行)部分记录到日志文件
中 )从 ksh 迁移到数据库我将能够提高系统的整体质量:
- 安全性(不再有 SSH 连接,前端将向数据库发送消息,数据库消息监听器将对消息做出反应并异步执行程序)
- 维护(我们使用我们熟悉的 PL/SQL)
- 技术多样性(到下一次操作系统迁移时,我们将只需要迁移数据库对象和数据)
- 日志记录(我们将充分使用我们的后端日志记录解决方案)
您认为如何关于我的考虑以及你的经历使用 Oracle 高级队列?特别是在稳定性、性能和维护方面?有更好的选择吗?
I am considering to use the Oracle Advanced Queueing technology for asynchronous communication. My aim is to use it for concurrent process execution (asynchronous PL/SQL procedure calls).
The current legacy implementation for the concurrent process execution is made of Unix KornShell (ksh) scripts which we are starting from front end via SSH connection in background mode. It works fine for us, but I am unhappy with that kind of solution because of:
- Security (front end starts a SSH connection and executes ksh scripts in background mode. From our colleagues I noticed that this kind of login will be restricted in our company.)
- Maintenance (Not everyone of our team is familiar with ksh scripts)
- Diversity in technology (I try to decrease the diversity in technology because of know how and migration efforts)
- Logging (Our back end system logs into database log tables, the concurrent execution logs partially into a log file)
By moving from ksh to the database I will be able to increase overall quality of my system:
- Security (No SSH connections anymore, the front end will send messages to the database and the database message listener will react to the messages and execute procedures asynchronously)
- Maintenance (We use PL/SQL, where we are familiar in)
- Diversity in technology (By next OS migration we will need to migrate only the database objects and the data)
- Logging (We will fully use our back end logging solution)
What do you think about my considerations and what are your experiences with Oracle Advanced Queueing? Especially in stability, performance and maintenance? Are there better alternatives?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我显然不知道你的项目的细节,但如果异步PL/SQL过程调用是你唯一的目标,那么使用DBMS_SCHEDULER可能会更容易。您的程序可以通过调用 PL/SQL 的调度程序提交作业以“立即运行”。在我看来,调度程序比 AQ 更容易使用。
I obviously don't know the details of your project, but if asynchronous PL/SQL procedure calls is your only goal, it may be easier to use DBMS_SCHEDULER. Your program could submit jobs to "run now" through the scheduler that call your PL/SQL. In my opinion, the scheduler is a much easier thing to work with than AQs.
使用异步队列管理流 Oracle 带来了优点和缺点:
优点
创建处理程序(JOB EVENT 或 APPLY PROCESS)来管理各种
子流
INSERT TIME 或 PRIORITY(有效负载中的 msg 参数)
带有截止日期或经过时间的消息。
业务
我认为一个好的解决方案是在 ORACLE 尾部使用 CODE JMS(JMS 提供程序),以便将 BL 移至 JAVA 上并利用该语言的各种潜力,包括日志记录。
The management of flows with Asynchronous queues Oracle brings with it advantages and disadvantages:
ADVANTAGES
create Handler (JOB EVENT or APPLY PROCESS) to manage the various
Sub Flows
INSERT TIME or PRIORITY (msg parameter in the Payload) Managing
message with a deadline or an Elapsed TIME.
DISADVANTAGES
I think a good solution would be to use the CODE JMS (JMS provider) on the tails ORACLE so as to move the BL on JAVA and to use the various potentials of the language including the Logging.