流消息处理示例应用程序

目录

示例应用程序概述

Oracle Streams 提供流中数据和事件的共享和管理。流能够在一个数据库中或者从一个数据库向另一个数据库传送这些信息。Oracle Streams 使您能够完全控制允许什么信息进入流、如何将信息传送到目的地以及如何在目的地应用这些信息。它还使您能够在每次需求的任何阶段变换流中的数据。

流能够利用类型 SYS.AnyData 的队列进行消息处理。这些队列称为流队列。本示例演示了如何使用 Java 消息处理服务 (JMS) 来访问流队列并获取 XML 逻辑更改记录 (LCR)。

流队列能够处理有效载荷属于 SYS.AnyData 类型的用户消息。SYS.AnyData 有效载荷可以是不同数据类型有效载荷的绕接符。捕获进程将数据库更改(包括数据操纵语言 (DML) 和数据定义语言 (DDL) 更改)捕获到 LCR(逻辑更改记录)中,并入列到类型为 SYS.AnyData 的队列中。捕获进程将那些从重做日志中捕获的更改重新格式化到 LCR 中。LCR 是具有特定格式的对象,描述数据库的更改。捕获进程始终与单个 SYS.AnyData 队列相关联,它只将事件入列到该队列中。要使用 JMS 将包含 LCR 的用户消息入列到流队列或从其中出列,应该以 XML 格式表示 LCR。应用进程基于所定义的规则来应用更改。它在将 LCR 和用户消息从队列中出列后应用这些规则。

该示例显示了一个假想的零售商店案例,该商店为全世界各种各样的客户提供服务。该零售商店与几家产品制造商相联系,将它们的产品直接销售给客户。该示例显示了流的消息处理功能。它显示流如何帮助在数据库之间复制数据,并且通过与 AQ 的交互操作来简化这些情况下的工作。以下给出应用程序的简短说明:

让我们假定该零售商店与一家制造计算机的制造商有联系。这家制造商维护一个数据库 (database 1),它与零售商店的数据库 (database 2) 处于不同的物理位置。只要产品价格有变化或者制造了新的产品,制造商只需更新该本地数据库 database 1,则更改就被传送到零售商店的数据库 database 2。在零售商店数据库 (database 2) 的应用进程中提供的 dml 处理程序在数据库中应用该更改。同时,它甚至将制造商数据库传送来的更改重新入列到同一队列中。这些重新入列的消息由管理员使用。

零售商店的管理员有权查看数据库中所更改产品的详细信息。可以使用 JMS 将详细信息从队列中出列,从而检索更新的产品信息。队列中仍然保留详细信息,以便在管理员查看详细信息后不丢失该信息。队列中保留产品的详细信息,直到管理员将其删除为止。

为应用程序提供了图形化接口,以便制造商能够从 GUI 页面更改产品的详细信息。零售商店的管理员也可以在线查看更新的产品详细信息。XML LCR 中提供的数据以简单的文本格式检索和显示。当选择了一个产品时,显示所检索的全部 XML LCR。管理员可以在不需要这些更新的产品信息时将其全部删除。在此之前,更新产品的详细信息存储在队列中。

零售商店的客户可以在所提供的单独页面中查看商店中提供的所有产品。

应用程序使用图示

返回页首

利用两个使用图示对应用程序流程进行说明。


图 1

图 1 说明了从制造商数据库中进行更改时起的流消息处理示例应用程序的完整流程。
1. 当在制造商数据库中插入、更新或删除产品详细信息时,该信息被捕获并传送到零售商店的数据库。
2. 零售商店数据库的应用进程中的 dml 处理程序把从制造商数据库检索到的更改重新入列,然后将其应用到零售商店数据库。
3. 该入列信息由管理员使用,以便找出零售商店数据库中所做的更改。
4. 当管理员不需要这些信息时,可以删除队列中的所有消息。

现在来看数据库流程图:


图 2

图 2 说明数据库中的应用程序流程。在这里执行的步骤是:

1. 当制造商在 Product_Master 表中进行了更改时,这些更改被 Streams_queue 捕获。
2. 这些更改从制造商数据库中的 Streams_queue 传送到零售商店数据库中的 Streams_queue
3. 此处 Streams_queue 提供的 DML 处理程序将更改应用到 Product_Master 表。同时,它再次将更改重新入列到 Streams_queue 中。
4. 当管理员登录时,应用程序通过使 Streams_queue 中的消息出列,显示数据库中最新的更改。
5. 客户查看到零售商店数据库的 Product_Master 表中所应用的更改。

安装和配置

返回页首

参阅安装示例以获取关于解压缩文件、安装和配置系统的渐进指导,以便成功运行此应用程序。

示例文件的说明

返回页首

StreamsMessagingSample 的目录结构如下所示:

目录 文件 说明
ConnForFirstDB.properties 本文件包含与第一个数据库相关的连接详细信息。
ConnForSecondDB.properties 本文件包含与第二个数据库相关的连接详细信息。
/docs Readme.html 本文件
Install.html 本文件包含安装应用程序所需的指令。
otn.css 由自述文件和安装文件所使用的样式表。
/docs/images *.jpg 本文件夹包含由自述文件和安装文件所使用的所有图像文件。
/jsp/StreamsMessaging common Validation.js 本文件包含应用程序中使用的通用 javascript 函数
images * 本目录包含由 JSP 文件使用的所有图像。
stylesheets styles.css 本文件包含由 jsp 使用的样式表类。
*.jsp 此位置提供应用程序中使用的所有 jsp。
/oracle/otnsamples/streams LCRInfo.java 本文件包含应用程序中所需 LCR 的详细信息。
Product.java 本文件包含产品的详细信息。
RetailDBBean.java 本文件包含连接零售数据库的方法。
StreamsMessagingBean.java 本文件包含连接制造商数据库和检索数据的方法。
/sql StreamsAdminConfig.sql 本脚本创建和配置流管理员,在数据库中管理流。
Install.sql 这是创建所有进程所需运行的第一个文件。它自动调用其余的脚本。
Create_Application_Objects.sql 本脚本创建应用程序所需的模式、数据库链接、表、序列。
Create_Streams_Processes.sql 本脚本创建将数据从 database 1 中的 PRODSTORE.PRODUCT_MASTER 表传送到 database 2 中的 PRODSTORE.PRODUCT_MASTER 模式所需的进程。
CleanUp.sql 本脚本通过删除应用程序所需的所有进程和用户来清除数据库。
Common.sql 本脚本接受应用程序所需的参数。


寄送此页面
Printer View 打印机视图