SOA中的MEP和JavaEE中的JMS类似,当然了就应该是类似的,因为都是关于消息方面的。一个是对系统架构当中消息的解决思路,一个是针对Java平台中的消息的具体解决办法(严格说不是具体的,只是提供了接口而已)或者说和上面分析BPM与Jpbm一样,前者是后者的特例,所以后者有的特征前者大部分都有。就像JMS规范中描述的那样消息无非也就是请求与应答,这里有两种基本的模式其实很简单啦。第一种就是请求/应答,第二种是请求不应答(单程)。如果两次单程消息的传递可以类似的成为一次请求/应答模式。但是他们还是有区别的,单程的消息传递是没有阻塞的,发送了就不需要发送者再去关系消息,而请求/应答是阻塞的,只要接受者没有应答,那么发送者就认为消息没有发送成功可能重新发送或者采取别的措施保证消息的安全到达。请求/应答的优势是面对的处理消息的对象是不变的。哪种更好没有定论需要根据实际业务去选择。

基于上面的两个基础的MEP可以演化出比较复杂的MEP。请求/回调,指的是类似Ajax的一种一步请求的应答模式,发送请求后表面上就不在关心消息但是实际上当应答到来后会采取相应的措施,即“回调”。发布/订阅,值得是类似RSS的模式发布者负责把消息推送给已经订阅的用户,在SOA中接受消息的可能是一个服务或者一个将多个服务组合到一起的系统。

在MEP中还有很多细节,比如对于错误消息的处理,比如各个服务模块和ESB之间需要制定协议,那么对于多层次协议的MEP的延迟处理等等。

05-11 13:51