﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-paulwong-随笔分类-MULE</title><link>http://www.blogjava.net/paulwong/category/51744.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 20 Jul 2012 20:10:46 GMT</lastBuildDate><pubDate>Fri, 20 Jul 2012 20:10:46 GMT</pubDate><ttl>60</ttl><item><title>关于ESB问答</title><link>http://www.blogjava.net/paulwong/archive/2012/07/20/383622.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 20 Jul 2012 13:14:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/07/20/383622.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/383622.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/07/20/383622.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/383622.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/383622.html</trackback:ping><description><![CDATA[
 
最近公司要上一个新项目。可能要整合以前的一些系统。现在考虑是用esb企业总线进行管理。初步定的是wso2。基于apache synapse。<br /><br />1.一般的esb流程是什么样子的？<br />是不是主系统发生soap请求。esb接收并且转换成jms然后子系统监听jms。最后得到数据。<br />还是。jms仅仅是内部转换。soap请求在esb转成jms后。加入队列。然后再转成soap调用子系统？<br /><br />2.使用jms的考虑是jms对队列的信息进行持久化。防止比如子系统突然挂掉了。消息丢失。<br />但是有个问题。是esb自动监听jms的队列的话。会导致直接消费了。而数据没有存在队列中。还是会出现消息丢失的问题。<br />这个应该怎么解决。<br /><br />3.esb进行协议之间的转换。每种方式都需要些一个转换方式么？有没有什么通用的。或者是自动转换的。比如soap和jms的互相转换。不是协议切换。是内容转换。<br /><br />4.如果大家有讨论esb的群。或者有高手愿意指点一下。谢谢了。&nbsp;&nbsp;&nbsp; <br /><br /><br />------------------------------------------------------------------<br />1，一般ESB的流程，<br />先是整理需连接的系统，需要连接的系统功能(一般管它叫服务)，确定服务的依赖关系，支持的协议(文件，WebService, RPC,...),调用的方式(同步/异步)<br />然后使用ESB提供的那些协议组件，一点点串起来就行。串的方式可以参考EIP (www.eaipatterns.com)<br /><br />你说的两种异步方式的话都可以，<br />如果是同步的，也可以直接soap -&gt; soap, 不用JMS。 一般用JMS是为了实现异步通讯 <br /><br />2，JMS，至少我接触的ActiveMQ， 是可以支持事务的，发生异常，可以不消费信息<br /><br />3，协议转换是为了配合你那些需要整合的系统，如果都是SOAP，也就不需要转了。<br />消息内容转换(格式，内容)，一般ESB都提供各种工具的。&nbsp;<br /><br /><br /><br />------------------------------------------------------------------<br />1、如果你要做同步转异步，可以在esb上做成ws转jms，然后起到一个缓冲的作用。<br />最后可以再同步的返回给调用方。<br />你也可以修改调用方为jms方式，这样就是彻底的异步了，在esb端可以jms转ws，调用业务服务方的ws。<br /><br />2、esb都支持事务的，jms中如果不确认消息的话，不会从持久存储去delete掉的。<br />一般的esb。也可以做成是esb消费掉消息，然后存入esb自己内置的jms provider中，这样你再消费的话，也是可靠的。还可以做成补偿机制的，即esb中如何消息处理失败，把消费放回去原来的queue或是一个中间的临时queue，稍后做recover。<br /><br />3、从esb的不同transport进去的数据，在esb的中介层处理时，其实消息格式都是一致的、通用的。也就是说常见的ws或jms转换在一般的esb里处理都很简单。如果稍微复杂点，也很容易扩展transformer（比如通过xslt做xml格式转换）来实现数据内容和格式的转换。 
<img src ="http://www.blogjava.net/paulwong/aggbug/383622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-07-20 21:14 <a href="http://www.blogjava.net/paulwong/archive/2012/07/20/383622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于Mule的ESB技术</title><link>http://www.blogjava.net/paulwong/archive/2012/05/20/378602.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 20 May 2012 03:39:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2012/05/20/378602.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/378602.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2012/05/20/378602.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/378602.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/378602.html</trackback:ping><description><![CDATA[<a href="http://www.hitb.com.cn/web/guest/bbs/-/message_boards/category/10511">http://www.hitb.com.cn/web/guest/bbs/-/message_boards/category/10511</a><img src ="http://www.blogjava.net/paulwong/aggbug/378602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2012-05-20 11:39 <a href="http://www.blogjava.net/paulwong/archive/2012/05/20/378602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>