集成框架spring integration体验

这段时间做大客户项目,大量的业务系统,错综复杂的调用关系,每天就是在不停的与外系统沟通,不得已对企业集成做了点小了解,重点体验了下spring integreation。

   忽略spring integration中的各种费解概念,就想弄点我想要的简单的应用集成模式,简化服务接入,服务编排工作,弄个类似tibco bw的process设计类似的小东西。

  • 我所理解的概念
  1.   服务适配器 dapaper:描述各种类型的外系统接入,webService接入,rmi接入,wtc接入,ftp,jms等等。
  2.   服务 service :基本的服务调用。
  3.   服务流  flow:一组由service,filter,splitter,route,aggregator,transformer等连接起来的服务集合。
  4.   服务流程 :节点状态控制,节点流转控制,节点可以是服务,可以是服务流,以及其他类型。
  • 我想要的功能
  1. 适配器定义
  2. 服务定义
  3. 服务流设计器
  4. 流程设计器
  5. 流程服务监控,服务统计,流量统计等
  • 基于spring integration的尝试

1.可配置的json调用,通过http adapter可以发布我们的服务,服务流,流程等为http ajax调用,可以解决界面调用的问题,。

2.统一输入和输出

  规范服务的输入和输出, 所有类型的服务输入输出都可被包装成统一模式。

3输入和输出的映射实现

  在transformer中配置输出到输入的映射,使得服务A的结果可以再图形界面中映射到服务B。

4服务异常处理机制

5服务流事务处理机制

 

  • spring integration示例

    示例描述

    调用其他系统发布的rmi服务,rmi调用成功后继续调用webservice服务,其中rmi的结果映射到webservice服务的输入参数中,最终打印webservice中的返回结果.

    spring配置文件

 

Xml代码   收藏代码
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  5.         http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-2.2.xsd  
  6.         http://www.springframework.org/schema/integration/file http://www.springframework.org/schema/integration/file/spring-integration-file-2.2.xsd  
  7.         http://www.springframework.org/schema/integration/http http://www.springframework.org/schema/integration/http/spring-integration-http-2.2.xsd  
  8.         http://www.springframework.org/schema/integration/rmi http://www.springframework.org/schema/integration/rmi/spring-integration-rmi-2.2.xsd  
  9.         http://www.springframework.org/schema/integration/ws http://www.springframework.org/schema/integration/ws/spring-integration-ws-2.2.xsd  
  10.         http://www.springframework.org/schema/integration/stream http://www.springframework.org/schema/integration/stream/spring-integration-stream-2.2.xsd"  
  11.       
  12.     xmlns:int="http://www.springframework.org/schema/integration"  
  13.     xmlns:int-file="http://www.springframework.org/schema/integration/file"  
  14.     xmlns:int-http="http://www.springframework.org/schema/integration/http"  
  15.     xmlns:int-mail="http://www.springframework.org/schema/integration/mail"  
  16.     xmlns:int-rmi="http://www.springframework.org/schema/integration/rmi"  
  17.     xmlns:int-ws="http://www.springframework.org/schema/integration/ws"  
  18.     xmlns:int-stream="http://www.springframework.org/schema/integration/stream">  
  19.       
  20.       
  21.     <bean name="jsonTransformer" class="com.gsoft.framework.esb.json.JsonTransformer"/>     
  22.       
  23.       
  24.     <int:channel id="rmiRequestChannel"/>  
  25.       
  26.     <int-rmi:outbound-gateway id="rmiGateway"  
  27.         request-channel="rmiRequestChannel" remote-channel="rmiExchange"  
  28.         host="127.0.0.1" reply-channel="rmiReply" />  
  29.       
  30.     <int:service-activator  input-channel="rmiExchange" ref="rmiServiceFactory" method="exchange"/>  
  31.       
  32.     <int:gateway id="rmiServiceFactory" service-interface="com.gsoft.framework.esb.rmi.RmiServiceFactory"/>  
  33.       
  34.       
  35.     <int:transformer input-channel="rmiReply" output-channel="helloWorldWsChannel"   
  36.         ref="rmi2hellWorldWsTransformer">int:transformer>  
  37.       
  38.     <bean name="rmi2hellWorldWsTransformer" class="com.gsoft.framework.esb.data.ReqMapResTransformer">  
  39.         <property name="mapping">  
  40.             <map>  
  41.                 <entry key="userName" value="#record.userName">entry>  
  42.             map>  
  43.         property>  
  44.     bean>     
  45.       
  46.     <int:channel id="helloWorldWsChannel"/>  
  47.       
  48.     <int:service-activator id="helloWordReqProcess" input-channel="helloWorldWsChannel"  
  49.         ref="wsInvoker" method="request"  output-channel="helloWorldReqChannel" />  
  50.       
  51.     <int-ws:outbound-gateway request-channel="helloWorldReqChannel" id="helloWorldGateway"   
  52.         uri="http://localhost:8086/platform/services/HelloWorld"  reply-channel="wsResChannel"/>  
  53.           
  54.     <int:service-activator id="wsResRrocess" input-channel="wsResChannel" output-channel="wsReply"  
  55.         ref="wsInvoker" method="reply"/>  
  56.       
  57.     <int:transformer input-channel="wsReply" ref="jsonTransformer" output-channel="log"/>  
  58.       
  59.     <int-stream:stdout-channel-adapter id="log"/>  
  60. beans>  

 

  spring integration 图

  

  测试代码

  • 初步总结
  1.  spring integration框架的应用集成可以简化我们很多的接口开发工作,通过自主开发设计器,能够把我们大部分的系统间服务调用装换成图形化的配置。
  2. 服务的切换是可行的。
  3. 服务调用的统计和监控工作的实现很容易切入。
  4. 性能上的优化是可自主掌控的。
  5. 服务的分解粒度已经可以很细。
  6. 服务,流程测试很方便;自主实现调试也是可行的。
  7. 部署和运维的集成也可行。

   

你可能感兴趣的:(spring,integration)