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

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

场景:投诉管理

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

3个服务:律师服务、公证员服务、默认服务

1 三个Axis2服务

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

package service.hello.ws.demo.com;

public class Route{
	public String litigate(String msg) {
		System.out.println("Route Test: " + msg + " coming! return 'Route: Hello "
				+ msg + "'");
		return "litigate Type " + msg;
	}
}

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

package service.hello.ws.demo.com;

public class Lawyer{
	public String litigate(String msg) {
		System.out.println("Lawyer: " + msg + " coming! return 'Lawyer Litigation "
				+ msg + "'");
		return "Lawyer Type "+msg;
	}
}

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

package service.hello.ws.demo.com;

public class Notary{
	public String litigate(String msg) {
		System.out.println("Notary: " + msg + " coming! return 'Notary Litigation "
				+ msg + "'");
		return "Notary Type" +msg;
	}
}

2 三个服务的三个端点

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

3 一个代理服务RouteProxy

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="RouteProxy"
       transports="https,http"
       statistics="enable"
       trace="enable"
       startOnLoad="true">
   <target inSequence="routeInSequence" outSequence="routeOutSequence"/>
   <publishWSDL uri="http://10.22.1.20:9763/services/Route?wsdl"/>
   <description/>
</proxy>

3.1 routeInSequence

<pre name="code" class="html"><span style="font-weight: normal;"><?xml version="1.0" encoding="UTF-8"?>
<sequence xmlns="http://ws.apache.org/ns/synapse"
          name="routeInSequence"
          trace="enable"
          statistics="enable">
   <switch xmlns:ns="http://org.apache.synapse/xsd"
           xmlns:p="http://com.demo.ws.hello.service"
           source="$body//p:litigate/p:msg">
      <case regex="0">
         <property name="STATE" value="0" scope="default" type="STRING"/>
         <send>
            <endpoint key="RouteLawyerEndpoint"/>
         </send>
      </case>
      <case regex="1">
         <property name="STATE" value="1" scope="default" type="STRING"/>
         <send>
            <endpoint key="RouteNotaryEndpoint"/>
         </send>
      </case>
      <default>
         <send>
            <endpoint key="RouteEndpoint"/>
         </send>
      </default>
   </switch>
</sequence></span>

3.2 routeOutSequence

<sequence xmlns="http://ws.apache.org/ns/synapse" name="routeOutSequence" trace="enable">
   <switch xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" source="get-property('STATE')">
      <case regex="0">
         <log level="full">
            <property name="Sequence" value="0"></property>
         </log>
         <send></send>
      </case>
      <case regex="1">
         <log level="full">
            <property name="Sequence" value="1"></property>
         </log>
         <send></send>
      </case>
      <default>
         <send></send>
      </default>
   </switch>
</sequence>

4 测试

输入0

输入1

输入其他值

具体参考 http://download.csdn.net/detail/szh1124/8447887

时间: 2024-10-10 08:12:58

(8)WSO2 ESB功能——消息路由的相关文章

(9)WSO2 ESB功能——数据转换

这篇文章介绍如何通过WSO2 ESB实现数据转换的功能:如改变消息值,"0"转换为"律师投诉","1"转换为"公证员投诉":改变消息标签,添加消息属性等. 场景一:投诉管理 描述:改变消息值,"0"转换为"L","1"转换为"N" 1 创建法律援助服务 参见代码FayuanService,打包为FayuanService_1.0.0.aar服务发布

(10)WSO2 ESB功能——服务编排

1 BPS官方文档<Quick Start Guide>(WS_NumberAdderCarbon) https://docs.wso2.com/display/BPS320/Quick+Start+Guide 本章将介绍如何设置和启动WSO2 BPS,在WSO2 BPS管理控制台创建.部署和测试一个BPEL流程发布包,该流程实现两个数的相加. 1.1 介绍 实现加法运算,不调用外部服务. 1.2 步骤 1.2.1 启动BPS 1.JDK 1.6.* 以上 2.从 http://wso2.co

WSO2 ESB

什么是WSO2 ESB? WSO2 ESB是一个轻量级的易于使用的企业服务资源总线.WSO2 ESB允许系统管理员和SOA架构师,消息路由,虚拟化,中介,转换,日志记录,任务调度,负载平衡,失败了路由,事件经纪和更简单,轻松地配置.运行时被设计为完全异步,基于Apache Synapse进行处理.WSO2 ESB4.0.2是可定制的解决方案,可以满足现有的需求. 在哪下载? http://wso2.org/downloads/esb WSO2 ESB组件体系结构? 先看张官方的图 WSO2 ES

WSO2 ESB XML定义语法

1.参考文件位置: http://synapse.apache.org/userguide/config.html Synapse ESB(wso2中使用相同的配置)使用基于XML的配置语言进行配置.这是由Synapse社区创建和维护的域特定语言(DSL).该语言设计简单,直观且易于学习.此语言中的所有XML元素(标记)必须使用命名空间URL http://ws.apache.org/ns/synapse进行命名空间限定.如下图: 文档结构: 2.配置语法 1.registry 配置 <regi

MFC消息路由

1.Command Routing(命令传递):当消息进来时,会有一个泵推动它前进.消息如何进来,以有泵函数如何推动,都是属于windows程序设计的范畴, 消息如果是从子类流向父类(纵向流动),那么事情再简单不过,整个message map消息映射表已规划出十分明确的路线.消息应该有横向流动的机会,MFC对于消息循环的规定是: 如果是一般的windows消息(WM_XXX),则一定是由派生类流向基类,没有旁流的可能. 如果是命令消息(WM_COMMAND),那就有奇特的路线了.   2.消息映

基于NIO的消息路由的实现(四) 服务端通讯主线程(1)

一.简单介绍: 服务端通讯主线程是消息路由服务的启动类,其主要作用如下: 1.初始化相关配置: 2.根据配置的ip和port创建tcp服务: 3.接收客户端连接,并给客户端分配令牌: 4.接收客户端的登录请求,并将客户端相关信息(令牌.客户端登录标识.最后访问时间.当前token所使用的通道,保存到缓冲区) 5.接收客户端的报文请求,并添加到通讯队列,等待处理: 6.接收来自各处的指令发送请求,并发送至相关通道: 二.详细介绍: 1.启动方法:首先加载配置信息:然后启动主线程.通讯报文消费线程(

BizTalk动手实验(八)消息路由

1 课程简介 通过本课程熟悉BizTalk消息由的机制 2 准备工作 1. 熟悉XML.XML Schema.XSLT等相关XML开发技术 2. 新建BizTalk空项目 3 演示 3.1 动态消息路由 1. 新建Schema,添加targetEndPoint及notes两字段并且升级为可分辨字段 2. 新建Orchestration,构建流程图如下图所示 3. 创建发送逻辑端口,在选择端口绑定类型时选择动态,Send Pipeine选择passthough管道 4. 新建InMsg和OutMs

说说设计模式~装饰器模式(Decorator)~多功能消息组件的实现

返回目录 为何要设计多功能消息组件 之前写过一篇装饰器模式的文章,感觉不够深入,这次的例子是实现项目中遇到的,所以把它拿出来,再写写,之前也写过消息组件的文章,主要采用了策略模式实现的,即每个项目可以通过配置进行一种消息的订制,如,你可以订制email,sms,rtx,qq等,但不能同时采用多种机制完成消息的发送,这在一些情况下是没有问题的,但有时,我们也需要同时为客户提供多种消息的推送,这在目前还是挺现时的,如在用户下单后,同时为它发email 和短信进行通过,并对每个订单的过程进行跟踪并通知

Azure IoT Hub 十分钟入门系列 (3)- 使用消息路由将原始设备数据记录存档

本文主要分享一个案例: 10分钟使用消息路由将原始设备数据记录存档 B站视频讲解:https://www.bilibili.com/video/av90223893/ 本文主要有如下内容: 1.理解什么是消息路由,为什么要用消息路由 2.消息路由的类型 3.配置一个到Storage的消息路由,将原始设备消息存储到blob 4.配置一个到Storage的消息路由,当温度>30°C时,才存储下来 图文讲解: 本文参照官网:https://docs.azure.cn/zh-cn/iot-hub/tut