WSO2——(8)ESB功能:消息路由

这篇文章介绍如何通过WSO2 ESB实现消息路由的功能:基于内容的路由,根据消息内容的不同路由到不同的服务进行处理。

场景:投诉管理
描述:公众发起对律师或公证员的投诉,输入0转到律师服务进行处理,输入1转到公证员服务进行处理,其他值转到默认服务进行处理
3个服务:律师服务、公证员服务、默认服务

1 三个Axis2服务

默认服务Route:http://10.22.1.20:9763/services/Route?wsdl

[java]  view plain  copy
  1. package service.hello.ws.demo.com;  
  2.   
  3. public class Route{  
  4.     public String litigate(String msg) {  
  5.         System.out.println("Route Test: " + msg + " coming! return 'Route: Hello "  
  6.                 + msg + "'");  
  7.         return "litigate Type " + msg;  
  8.     }  
  9. }  

律师服务Lawyerhttp://10.22.1.20:9763/services/Lawyer?wsdl 

[java]  view plain  copy
  1. package service.hello.ws.demo.com;  
  2.   
  3. public class Lawyer{  
  4.     public String litigate(String msg) {  
  5.         System.out.println("Lawyer: " + msg + " coming! return 'Lawyer Litigation "  
  6.                 + msg + "'");  
  7.         return "Lawyer Type "+msg;  
  8.     }  
  9. }  

公证员服务Notary: http://10.22.1.20:9763/services/Notary?wsdl  

[java]  view plain  copy
  1. package service.hello.ws.demo.com;  
  2.   
  3. public class Notary{  
  4.     public String litigate(String msg) {  
  5.         System.out.println("Notary: " + msg + " coming! return 'Notary Litigation "  
  6.                 + msg + "'");  
  7.         return "Notary Type" +msg;  
  8.     }  
  9. }  

2 三个服务的三个端点

为上述三个服务分别建立端点。

3 一个代理服务RouteProxy

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <proxy xmlns="http://ws.apache.org/ns/synapse"  
  3.        name="RouteProxy"  
  4.        transports="https,http"  
  5.        statistics="enable"  
  6.        trace="enable"  
  7.        startOnLoad="true">  
  8.    <target inSequence="routeInSequence" outSequence="routeOutSequence"/>  
  9.    <publishWSDL uri="http://10.22.1.20:9763/services/Route?wsdl"/>  
  10.    <description/>  
  11. </proxy>  


3.1 routeInSequence

[html]  view plain  copy
  1. <pre name="code" class="html"><span style="font-weight: normal;"><?xml version="1.0" encoding="UTF-8"?>  
  2. <sequence xmlns="http://ws.apache.org/ns/synapse"  
  3.           name="routeInSequence"  
  4.           trace="enable"  
  5.           statistics="enable">  
  6.    <switch xmlns:ns="http://org.apache.synapse/xsd"  
  7.            xmlns:p="http://com.demo.ws.hello.service"  
  8.            source="$body//p:litigate/p:msg">  
  9.       <case regex="0">  
  10.          <property name="STATE" value="0" scope="default" type="STRING"/>  
  11.          <send>  
  12.             <endpoint key="RouteLawyerEndpoint"/>  
  13.          </send>  
  14.       </case>  
  15.       <case regex="1">  
  16.          <property name="STATE" value="1" scope="default" type="STRING"/>  
  17.          <send>  
  18.             <endpoint key="RouteNotaryEndpoint"/>  
  19.          </send>  
  20.       </case>  
  21.       <default>  
  22.          <send>  
  23.             <endpoint key="RouteEndpoint"/>  
  24.          </send>  
  25.       </default>  
  26.    </switch>  
  27. </sequence></span>  


 3.2 routeOutSequence

[html]  view plain  copy
  1. <sequence xmlns="http://ws.apache.org/ns/synapse" name="routeOutSequence" trace="enable">  
  2.    <switch xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" source="get-property('STATE')">  
  3.       <case regex="0">  
  4.          <log level="full">  
  5.             <property name="Sequence" value="0"></property>  
  6.          </log>  
  7.          <send></send>  
  8.       </case>  
  9.       <case regex="1">  
  10.          <log level="full">  
  11.             <property name="Sequence" value="1"></property>  
  12.          </log>  
  13.          <send></send>  
  14.       </case>  
  15.       <default>  
  16.          <send></send>  
  17.       </default>  
  18.    </switch>  
  19. </sequence>  

4 测试

输入0

输入1

输入其他值


具体参考 http://download.csdn.net/detail/szh1124/8447887
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值