暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle AQ异步搜索

askTom 2017-03-15
786

问题描述

你好,汤姆。
我有一个相当长的问题,我想,需要相当短的答案。
我需要为数据库中的异步搜索开发解决方案。
由于没有使用Oracle Advanced Queuing的经验,我在Internet上阅读了有关此机制的一些信息,并感到这可能是可行的方法。另一方面,现在,我不能花太多时间研究它,只是为了最终揭示这个机制不适用于我的情况。这就是为什么我要求你快速概述一下这项任务的高级描述,并建议我,如果这似乎是OracleAQ要做的工作的话。
我拥有包含所有客户数据的数据库 (D),以及必须执行异步搜索才能访问该数据的合作伙伴系统。交互必须仅通过Oracle实现-我的意思是,业务逻辑不得分为Oracle层和某些服务的层,以Java实现。
所以,应该是这样的:
S发送搜索请求,其中设置了输入参数,并且不等待D的响应。
D需要处理此请求。它运行一个过程,该过程执行搜索并输出作为结果的XML (或错误代码)。
* 这是我最喜欢的部分。
D不想存储那个XML (至少不是很长时间),但它需要以某种方式意识到,它的请求已经完成,它可以使用它的XML (最好清理空间,由该XML)。
关于AQ的事情,例如在读取消息后将其排入队列,在任务的上下文中似乎非常有吸引力。指定不同类型的消息的机会相同,可以将其放入队列中,并为其提供不同的状态。
但是我不清楚什么可以是一个生产者和一个订阅者在D。我可以做一个搜索过程队列的订阅者 (这样它就像插入到队列表中的触发器一样)?S方面的生产者和订户必须是什么?
基本上,我需要一种机制,可以通过从S的请求过程的调用提交dbms_job来实现,运行搜索过程并在完成时从D到S发送回调。阻止我在这里使用dbms_job的事实是,所有这些搜索的事情必须在不到3秒的时间内完成,并且提交的工作启动的最小间隔是,我认为,5秒。

那么,你能告诉我,它是否可以通过AQ实现 (如果非常耗时,不需要深入细节) 吗?
提前非常感谢。

专家解答

你可以为你的AQ用户设置回调过程。这些可以自动将消息出队并运行回调过程。请参见以下示例:

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:8760267539329
http://www.oracle-developer.net/display.php?id=411

所以我相信你问的是可能的。鉴于您提供的信息,我不确定您将如何做...

您可能还想阅读有关使用Oracle数据库开发指南中的发布-订阅模型的信息:

http://docs.oracle.com/database/121/ADFNS/adfns_publish.htm#ADFNS014
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论