最近一个集成项目需求如下:从Oracle临时表中轮询数据,将轮询结果插入到MSSQLSERVER数据库中,然后在确保数据插入MSSQLSERVER后,将Oracle临时表中的数据删除。由于初次接触Mule,一些概念和应用尚未搞明白,现将实现过程整理如下,仅供参考。
重点注意事项:
1.Mule版本:mule-standalone-3.3.0社区版;
2.NameSpace:比如下文,千万别迷信《Mule 3 User Guide》中关于JDBC Transport相关段落,这可是我逐个验证的结果,信不信由你;
3.chaining-router:使用chaining-router返回插入MSSQLSERVER时验证消息时,必须使用exchange-pattern="request-response"属性,否则Mule会提示“Chaining router cannot process any further targets. There was no result returned from endpoint invocation”,这个问题花费了我好长时间才解决;
4.如果无法判断sql语句是否被执行,可以故意将sql语句搞出点语法错误,这样可以在console界面中看到错误信息以及参数值,达到调试的目的;
5.建议大家认真了解一下Mule的消息机制,否则会走不少弯路
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:jdbc="http://www.mulesoft.org/schema/mule/jdbc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:jms="http://www.mulesoft.org/schema/mule/jms/3.3"
xmlns:stdio="http://www.mulesoft.org/schema/mule/stdio"
xmlns:management="http://www.mulesoft.org/schema/mule/management/3.3"
xmlns:vm="http://www.mulesoft.org/schema/mule/vm"
xmlns:http="