ServiceMix学习之我见(5)

2019-02-16 14:38

2.7 四种标准MEP

值得注意的是NMR提供了一个可扩展的消息交流模型。JBI供应商可以自由地扩展四种MEP的标准目录。

每种模式以一个状态交换结束,用于确定交换已经结束。这种方式对于可选消息(或默认)作为消息交换模式的一部分来说尤其有用,在所有的MEP中支持可靠消息交换。

在标准JBI模式中,以起始组件开始的交换模式一般是服务的消费者,它创建并初始化一个新的交换实例。服务消费者 “拥有”这个消息交换实例直到把它发送出去(使用DeliveryChannel.send())。随后这些参与者交替接收和发送消息交换实例,直到某个参与者把消息交换状态设置为终结状态并把它发送给另一个参与者。当一个组件接收一个消息交换实例(使用DeliveryChannel.accept())时,就说它“拥有”一个消息交换。

下图显示了对于每种标准JBI消息交换模式,服务消费者和提供者之间可能的交互。每种模式都是两个参与者(无论它们的角色是服务提供者还是消费者)之间的契约。注意,当接收一个消息交换实例时,一个参与者可以通过使用MessageExchange.getRole()很容易地决定它的角色是服务提供者或是消费者。这有助于参与者在参与较复杂的模式时与参与较简单模式时一样方便。 图例(Diagram Key)

此处的MEP图展示了接下来的图例要使用到的符号。这些图代表了消息交换的时间顺序,时间在图中显示为从上到下。交替过程(故障或正常回复)使用选择符号表示。

图11 MEP图例

Page 21 of 67

2.7.1 In-Only消息交换模式(In-Only Message Exchange)

这种模式被用作单向消息交换。

图12 In-Only MEP

注意:

· 服务消费者使用消息发起请求。 · 服务提供者回复状态以完成交换。

2.7.2 健壮的In-Only消息交换模式(Robust In-Only Message Exchange)这种模式被用作可靠的单向消息交换。

图13 Robust In-Only MEP

注意:

· 服务消费者使用消息发起请求。 · 服务提供者可能回复状态或故障。

· 如果服务提供者回复状态,那么交换完成。

· 如果服务提供者回复故障,消费者回复状态以完成交换。

2.7.3 In-Out消息交换模式(In-Out Message Exchange)

这种模式被用作双向消息交换。

Page 22 of 67

图14 In-Out MEP

注意:

· 服务消费者使用消息发起请求。 · 服务提供者回复消息或故障。 · 消费者回复状态。

2.7.4 In Optional-Out消息交换模式(In Optional-Out Message Exchange)这种模式被用作服务提供者的回复可选的双向消息交换。

图15 In Optional-Out MEP

注意:

· 服务消费者使用消息发起一个请求。 · 服务提供者可能回复消息、故障或状态。 · 如果服务提供者回复状态,那么交换完成。

Page 23 of 67

· 如果服务提供者回复故障,消费者必须回复状态。 · 如果服务提供者回复消息,消费者可能回复故障或状态。 · 如果服务消费者恢复故障,提供者必须恢复状态以完成交换。

2.8 传输通道

JBI传输通道是双向的通信管道,通过NMR传输消息以连接绑定组件和服务引擎。接口javax.jbi.messaging.DeliveryChannel确定服务消费者、服务提供者和NMR三者之间的接口合约关系。

服务使用者通过其传输通道初始化服务调用请求;服务提供者通过其传输通道接受消费者的调用请求。既是使用者又是提供者的组件使用相同的一条传输通道。因此,接口DeliveryChannel的实现必须支持通道实例在多线程下的并发使用。

2.9 服务API(Service API)

此API允许JBI组件与NMR交互。

Page 24 of 67

图16 NMR API类图

Page 25 of 67


ServiceMix学习之我见(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:购买土方招标文件

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: