ESB控件的使用

esb控件记录

1.src/main/resouses 文件夹中放需要解析的文件
2.src/main/java中写java代码,一般不写,只有当mule不能实现功能的时候才会写代码


  1. flow : 相当于是一个过程,顺序执行

  2. payload : 相当于是一个指向栈顶的指针,执行的过程,每经过一个组件 ,把组件压入栈中,payload指向的对象都是栈顶元素,都是在动态变化,前提是connector是有输出的如果没输出,我们认为这个connector没有压入栈中好了,栈的大小为1 ,其中logger 和 variable的connector 没有数据输出,payload经过这两个connector,值不会发生变化

  3. post方式获取请求发送的方式 #[payload.变量名]
    get方式获取请求发送的方式#[message.inboundProperties.'http.query.params'.变量名]

  4. variable:获取get ,post中传过来的参数,放入变量中(变量名在variable控件中设置,其中获取传过来的变量值,见上一条的获取方式,3),使用变量中的值,使用#[flowVars.变量名]
    注,关于#[]的使用,可以理解成[]中的都是java代码,可以执行语句;其中变量名会被自动解析,非变量则被当成字符串,可以进行拼接,与jsp标签<%=%>很相像

  5. ByteArraytoString 把接受到的流转换为字符串(一般用于接受json和xml类型的参数,这种参数都是用流的方式接受到的) 这个控件的参数不需要设置

  6. set payload 给payload设值,比如要传入一个json对象,则把payload设置成json对象,当payload指向http控件时候,会自动把值传给http控件

  7. object to json : 把字符串转成json格式 (当转的数据中存在date类型的字段时,经常需要进行序列化操作,目前还不知道该怎么操作,可以使用transform message控件代替)

  8. transform message : 数据转换,把一种数据格式转换成另一种数据格式,把待转换的数据的字段与转换后的字段对应起来即可。当被转换的数据格式是从数据库中查出来的记录时(此时payload是一个list<map<String , Object>>),会自动显示待被转换的字段,即map中的key值,除了该格式的数据外,其他格式的数据字段(如json)不会自动显示出来,需要setMeta,转换后的数据的字段一定要setMeta,一般都是json数据,我们现在java/main/resource中创建一个json模板,把该模板设置为转换后的数据格式(具体怎么把模板设置为数据格式,暂时不做记录)

  9. 数据转换的两种方式:
    1) transform message 如果要把 list的数据转成任意的数据,则在transform在input中会自动识别出列名,然后自己需要自定义转换后的数据格式,在output中设置,然后把input和output中的列名对应起来;如果是要把非list的数转成其他格式,则input 和output中的数据都需要自己定义格式
    2) object to json 把数据转成json格式,使用方式见7

  10. 批量添加(insert bulk): 先把database加入到flow中,选中database的Bulk Modle 选项,然后再把transform拖到database前进行数据转换

  11. postman传的中文是乱码, 在Content-Type中追加: ;charSet=utf-8

  12. Groovy :用于写脚本语言(有两个,用的是蓝色的那个,红色的那个的作用还不知道)

  13. Catch Exception Strategy:用于处理异常。 当正常的flow执行下去遇到异常的时候,跳转到下面的Error Handling中执行。这个时候的payload还是可以像之前那么使用。

不积跬步无以至千里
原文地址:https://www.cnblogs.com/jinxiuze/p/7940394.html