加载中…

加载中...

个人资料
人月神话
人月神话 新浪个人认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:4,251,904
  • 关注人气:5,944
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

谈基于SOA的消费发布订阅

(2013-09-03 19:58:32)
标签:

soa

消息

it

分类: IT咨询
利用标准的消息中间件产品功能,结合SOA服务很容易实现一个简单的消息发布订阅功能。对于消息发布订阅模式下消息中间件的异步实时,临时存储,多点发布的功能可以很好的发挥出来。首先我们看一个最简单的业务场景,门户系统产生组织数据,需要分发到采购,物流,合同等多个业务系统,传统的做法可能是门户系统通过路由服务进行多次发送,而基于消息发布订阅模式下,门户系统只需要将消息发送到ESB即可,后续由ESB对订阅了该消息的各个接收方进行准实时的数据推送。

基于该场景来看一个最简单的实现方式,当然首先是需要一个标准的消息中间件能力。

对于组织数据的分发仍然需要定义为一个标准的web service服务,生成具体的服务接口和服务契约文件。各个数据的接收方需要根据该规范去实现该服务的接收端。

在ESB总线上新生成一个新的服务,该服务仍然需要实现所有的服务接口规范和契约。而该服务的具体实现内容为,首先是接收到具体的数据,在该数据进入到MQ后即返回给服务消费方具体的结果信息。这个时候消息在MQ中具体暂存。在MQ中消息的生成需要根据服务的订阅情况来分布生成,即一个服务有N个不同的订阅方最好方式是生成不同的待推送服务。服务实现只需要将生成的订阅服务推送到MQ即可。下一个步骤重点是MQ本身的能力和定制,即对于MQ中的消息进行解析,然后分别进行发送,对于发布出现异常的信息可以仍然保持在队列中支持后续重试。

在ESB上新生成了该服务后,需要再增加服务订阅功能,即针对某一个服务,在业务系统实现了该服务后,可以对该服务进行订阅,订阅成功后信息进入到服务订阅清单表。对于上面一步具体MQ消息的生成需要根据订阅清单进行生成。

再进一步,服务消费方应该还需要实现一个回写的服务,对于ESB进行逐个推送出现的异常或完整性校验信息可以回写到服务消费方,以方便进行后续的日志和异常监控。

基于消息中间件的异步模式可以完全实现业务系统或组件间的解耦,但是并不是所有的服务都能够通过异步的方式来解决。在消息发布订阅模式下可以进一步的实现服务的透明特性。

0

阅读 收藏 转载 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有