JMS适用场景


[b]
用例
[/b][size=large][/size]

在实际的 SOA 业务应用程序——特别是涉及到异类 IT 基础设施的应用程序以及希望对这些 IT 基础设施提供的服务间的工作流进行组合以形成松散耦合的交互的应用程序——中,服务使用者和提供者间的消息流并不需要采用同步方式处理。由于 JMS 作为面向消息的中间件标准得到了广泛的应用,因此经常用作同步和异步服务调用的首选协议。

有很多典型的场景,其中服务间的连接可以使用 JMS 进行传输:电子政务、电子商务或工业制造就是其中的一些例子。

示例 1

一个具体的用例就是处理会计系统中的文档。影响公司财务的文档(如购买货物的发票)在企业中多个系统流动。其中很多都必须采用允许以后进行审计的方式处理(某些情况下,这是法律强制要求的做法)。这意味着此类文档的流通必须能够跟踪,而这又要求传输协议要十分可靠。而且,所涉及的系统之间的很多交互都实现了具有异步性本质的工作流。因此,所选的协议既要支持消息的可靠事务性交换,也要支持各种消息传递模式(异步和同步调用以及发布/订阅消息)。

同时,要对所有消息进行定向,使其通过企业服务总线,以便能够应用其他功能;如基于内容的动态路由或数据转换以及日记记录和日志记录。

此会计示例代表了一个场景,在此场景中,解决方案采用面向服务的体系结构构建的,但并不一定会使用 Web 服务;在我们的例子中,服务通过交换普通 JMS 消息进行通信。为此类解决方案部署 ESB 仍然十分可行。

示例 2

让我们看看另一个场景,制造行业的一个例子:某个公司制造需使用大量部件的产品,其中一些部件来自内部的工厂,而其他从外部供应商处购买。该公司希望加速其库存周转,降低其库存水平,从而降低内部成本和提高其产品的上市时间。实现此目标的一个方法是与其业务合作伙伴(包括供应商)建立更紧密的关系。

通常,制造商将利用生产计划系统(production planning system,PPS)来协调其内部生产与外部供应链。在 PPS 中,内部部件的库存较低时,将生成生产请求,以生产此部件。

除了使用内部工厂提供的部件外,该制造商还从外部供应商购买其他部件。为了提高所涉及各方的集成水平,该制造商需要将其 PPS 与其若干供应商系统集成,以便自动交换供求信息。为了将 PPS 系统连接到任意数量的供应商(每个供应商都采用自己独特的协议和数据格式),可能必须开发大量的代码。

很多要集成的现有系统都使用 JMS 作为外部消息传递协议。其他系统(特别是最近构建的系统)可能支持 Web 服务。在此情况下,制造商决定建立 ESB 来集中处理协议和消息格式的转换,从而将对现有系统的任何影响降到最低。例如,外部接口使用 JMS 的现有系统可以与 Web 服务交互,并将处理不同协议的细节委托给 ESB。

猜你喜欢

转载自tanzhuo.iteye.com/blog/930723