在文章《Evolutionary integration with ESBs》原文地址( http://www.infoq.com/articles/Evolutionary-integration;jsessionid=343FB1F9A91896EF664974C580B0B34D) 作者以一个具体的应用阐述的了ESB给企业应用集成带来的作用。
作者首先给出了一个案例:
Kjetil 和 Rune 在挪威的阿尔卑斯附近开了一家滑雪服务公司,为了盈利,他们要构建一个系统为滑雪者提供有用的信息。
- 用户发送一封含有关键字“powder”的邮件到一个特定的地址。
- PowderAlert应用程序定期查询邮件账号,收取邮件,并存储用户的邮件地址。
- PowderAlert从一个公共的站点收集有用的滑雪信息。这些信息通过邮件发送给 PowderAlert application.
- PowderAlert定期收回这些有用信息的邮件。
- 将这些邮件发送给用户。
- 用户阅读邮件
Skiinfo 提供邮件和短消息两种报警信息。
作者首先给出了传统使用Spring实现的框架架构。
Spring 支持通过 JavaMailSender 和 SimpleMailMessage发送邮件. 他们使用Hypersonic SQL做数据库. 因为他们不喜欢SQL,所以使用Hibernate 和 Annotations的结合 . 他们认为2006年的Java程序应该使用Java5的新语言特性是
程序有两个模块:核心和web. 核心包含领域模型和各种service,包括查询邮件服务器,查询数据库,发送邮件。web部分主要包括启动处理查询邮件和用户接口的servlet
接下来作者使用Mule ESB来实现同样的功能
将PowderAlert application 分为几个粗力度的服务
- The Mail server
- The SkiInfo site
- The PowderAlert core service(s)
所以要做的工作就是
- 创建Mule Endpoints, 和mailserver 交互.
- 将 PowderAlert core services 转换成 UMO components.
- 创建 Transformers 转换email messages 成 UMOEvent objects.
总结
Mule 的作用是透明地将其他系统集成到主应用中来。这样,集成新的系统的时候,对主应用PowderAlert的影响最小。
译者:
简单了说这个系统的主要功能,就是把邮件从一个邮箱取出来,处理后转发到另一个大家订阅的邮箱。
如果用传统的j2ee方法,你需要用servlet或者去quarz实现定时功能。然后用javamail接口取邮件,以及发送邮件。还要处理邮件的解析和转换。
有了ESB上面的功能。例如定时取邮件,发送邮件这些功能都被封装好了,你只需要通过配置文件配置一下,这些功能全有了。
通过配置实现点到点的企业应用集成,更符合SEDA的思想。