ServiceMix企业服务总线(ESB)
ESB是集中化的、逻辑上的,具有架构层次的组件,提供在分布式异构环境中高度可扩展性、容错、消息服务等服务框架的一种实现。本文将讨论开源项目ESB ServiceMix,及其与JBI Java业务集成规范的关系。
规范化消息路由
JBI系统内消息交换依赖于规范化消息路由NMR在服务者和消费者之间路由消息交换对象(message exchange objects)。针对应用的不同需求以及消息本身特性,NMR提供不同服务质量的消息传输服务。
NMR并不寄宿于任何一个具体的对象中,它被抽象成一套应用程序接口、服务提供者接口、组件接口等。NMR API包括:
- ---JBI Message API JBI消息接口
- ---JBI Service API JBI服务接口
- ---JBI Message Exchange Factory API JBI消息交换对象工厂接口
- ---Service Description SPI 服务描述接口
- ---Message Exchange Patterns API 消息交换模式接口
- ---Endpoint Reference API 端点引用接口
传输通道
JBI传输通道是双向的通信管道,通过NMR传输消息以连接绑定组件和服务引擎。接口javax.jbi.messaging.DeliveryChannel确定服务消费者、服务提供者和NMR三者之间的接口合约关系。
服务使用者通过其传输通道初始化服务调用请求;服务提供者通过其传输通道接受消费者的调用请求。既是使用者又是提供者的组件使用相同的一条传输通道。因此,接口DeliveryChannel的实现必须支持通道实例在多线程下的并发使用。
JBI组件
JBI组件框架提供了可插入的接口,绑定组件和服务引擎可以通过此接口与JBI系统交互。组件框架提供了所有访问JBI服务的接口。
JBI支持二种类型组件,服务引擎和绑定组件。组件可以通过以下二种方式与系统交互:
- 1. SPIs: 由绑定组件或服务引擎实现的接口。
- 2. APIs: 系统提供的,绑定组件或服务引擎可以访问的接口
服务引擎
服务引擎是JBI系统内的业务逻辑实现组件,可以作为服务提供者或使用者。服务引擎对服务使用和需求提供整合点。也可以提供诸如信息转换、复杂的路由、以及协调信息等功能。
绑定组件
绑定组件被用来在特定的协议和传输方式中发送和接收消息。通过绑定组件,JBI系统与特定的传输协议解耦。这是通过绑定组件对消息进行相应的协议特定和协议无关的编组(marshalling)和解组(unmarshalling)而实现的,这样JBI环境内仅处理规范化的消息。
规范化消息交换(Normalized message exchange)
JBI首要用途是在组件间路由规范化消息。消息传输时处于规范化形式。
绑定组件必须将特定于协议(传输层)的消息转换为规范化形式。 绑定组件和服务引擎通过传输通道与NMR通信,传输通道提供消息的双向传输机制。
一个JBI系统外服务使用者通过特定协议/传输层发送服务请求到绑定组件。绑定组件转换请求消息为规范化消息,构造一个称为消息交换(message exchange)的消息包, 然后通过传输通道传输到NMR,再由NMR路由到服务提供者。
当所使用的服务引擎或绑定组件收到消息后,创建相应的规范化消息,将此规范化消息填充到一个新的MessageExchange实例中,并传输到目标ServiceEndPoint实例处。服务端点获得消息交换对象后,恢复规范化消息为协议/传输特定格式,然后将消息传输到外部服务提供者。
- 本文关键词:

