1、一般ESB的流程,
先是整理需连接的系统,需要连接的系统功能(一般管它叫服务),确定服务的依赖关系,支持的协议(文件,WebService, RPC,...),调用的方式(同步/异步)
然后使用ESB提供的那些协议组件,一点点串起来就行。串的方式可以参考EIP (www.eaipatterns.com)
你说的两种异步方式的话都可以,
如果是同步的,也可以直接soap -> soap, 不用JMS。 一般用JMS是为了实现异步通讯
2、JMS,至少我接触的ActiveMQ, 是可以支持事务的,发生异常,可以不消费信息
3、协议转换是为了配合你那些需要整合的系统,如果都是SOAP,也就不需要转了。
消息内容转换(格式,内容),一般ESB都提供各种工具的。
4、如果你要做同步转异步,可以在esb上做成ws转jms,然后起到一个缓冲的作用。
最后可以再同步的返回给调用方。
你也可以修改调用方为jms方式,这样就是彻底的异步了,在esb端可以jms转ws,调用业务服务方的ws。
5、esb都支持事务的,jms中如果不确认消息的话,不会从持久存储去delete掉的。
一般的esb。也可以做成是esb消费掉消息,然后存入esb自己内置的jms provider中,这样你再消费的话,也是可靠的。还可以做成补偿机制的,即esb中如何消息处理失败,把消费放回去原来的queue或是一个中间的临时queue,稍后做recover。
6、从esb的不同transport进去的数据,在esb的中介层处理时,其实消息格式都是一致的、通用的。也就是说常见的ws或jms转换在 一般的esb里处理都很简单。如果稍微复杂点,也很容易扩展transformer(比如通过xslt做xml格式转换)来实现数据内容和格式的转换。