通过ESB构建事件驱动体系结构(一)
本文基于Oracle ESB的简单示例了解如何配置ESB以“发布”企业事件……
在面向服务的体系结构 (SOA) 领域,一个比较重要的概念是事件驱动的体系结构 (EDA)。与事件机制类似,例如在 JavaScript 或 4GL 环境中,可以将触发器(可执行程序代码段)与按压按钮、更改域值或者提交查询等事件相挂钩,而 EDA 指定“服务”与“业务事件”的挂钩方式。
大多数业务事件(从下订单、请求报价到聘用新员工或提供某部分设备)触发企业内多个响应。如果进行更近一步的细化,过程步骤内的事件(例如调用服务失败、超过预定义阈值或者到达指定目标)可能还会引起过程自身之外的相关方的兴趣。
EDA 允许您将创建或遇到事件的过程中的所有这些事件发布到一个中央事件处理主干上,从而使所有感兴趣的相关方可以从此处找到它们。产生事件的过程或服务本身无需考虑这些外部各方,否则,会给该特定过程的执行带来压力,系统之间交织过密,造成维护困难。
在本文中,您将通过一个基于 Oracle ESB 的简单示例了解如何配置该中央主干,以消息的形式将发布的事件传递给外部各方。
背景
Oracle ESB 具有使其适用于其任务的关键功能。首先,它可利用多种方法检索消息(事件通知):通过 JMS、Web 服务调用、文件系统或数据库表等等。它还可提取带有与事件相关数据的消息并对其进行转换,通常是将其转变为一种更通用、更规范的企业模型。
ESB 还可以将一个粗粒度事件消息转换为多个细粒度消息。例如,它可以在新用户已经注册并下了第一个订单时,通过从基于 Web 的客户订单系统接收的消息创建一个新客户事件以及新订单事件。在将原始消息转换为一个或多个更规范、可能更具针对性的消息时,ESB 还可以丰富消息的内容(例如,通过添加当前日期和时间戳信息或添加从参考数据源查找的信息),多个事件用户可能会有此要求。
最后,根据事件(消息的内容)的特性,ESB 可将内容经过扩充的已转换消息提供给多个输出通道,例如 Web 服务、JMS、数据库过程或表、文件或者电子邮件。
(注意:BPEL 流程就是事件报告程序的一个主要示例。执行 BPEL 流程时,在几个阶段中和在一些情况下,可以发布事件,通常是以在 ESB 中调用 Web 服务的形式进行。)
- 本文关键词:


