在xml的汪洋中遨游之mule篇
来源:互联网 发布:linux显示文件大小 编辑:程序博客网 时间:2024/04/29 22:52
mule号称开源ESB的最好实现,研究mule也有段时间了, 在“浩如烟海”的xml配置中,保持清醒的头脑确实不容易。
作为学习笔记之一,记录一下一个mule简单应用的实现。
需求:给指定的email地址发送邮件.
一:基本实现:
1: 实现命令行输入发送email:
为了能在命令行接受输入, 需要配置一个输入输出连接器:
2:配置一个UMO,把输入的内容放入一个队列:
outbound节点的配置, 把输入的内容(String) 路由到一个叫“content”的queue中, 此queue为jvm中的内存队列。
3:配置一个UMO,实现发送email:
其中inbound的配置为contentUMO的outbound, contentUMO和EmailBridge这个两个UMO通过名称为“content”的queue连接起来, 实现通讯。EmailBridge接收到输入后, 会依次通过ContentToEmail, StringToMimeMessage两个transformer进行内容的转换。
BTW:为了在mule中使用smtp, 需要在xml的namespace中声明:
xmlns:smtps="http://www.mulesource.org/schema/mule/smtps/2.1"
mule有很多对于具体协议的transport实现,每一个transport的实现作为一个jar包存在(比如mule-transport-email-2.1.2.jar), 在jar中的META-INF/spring.schemas文件中, 写明了xsd文件的对应关系, META-INF/sping.handers配置了相关命名空间的handle class, 可以据此在mule的配置文件中声明命名空间.
完整的mule配置文件如下:
相关class如下:
自定义消息转换器:
自定义smtp连接器(smtp connector):
运行此程序, 根据提示, 在命令行输入:
二: 升级:增加一个component.
修改UMO:EmailBridge配置, 增加一个component:
注意到增加了一个component, 接受命令行的输入(String), 产生一个EmailModel的对象.之后,这个EmailModel对象进入outbound, 并经过
emailModelToString, StringToMimeMessag的处理, 最后发送出去.
其中emailModelToString是新添加的一个自定义transformer:
相关class如下:
EmailModel.java:
EmailComponent.java
需要说明的是:
mule默认采用方法参数类型匹配策略, 所以, 如果有String类型的输入, foo方法自动调用, 也可以详细指定调用哪个方法,比如以下配置明确指定调用component的foo方法:
EmailModelToString.java
三:继续升级:不满足于在命令行输入, 需要在浏览器输入, 也就是发布一个http接口。
修改contentUMO如下:
通过http请求得到输入参数, 经过HttpRequestToString的转换, 放入“content” queue, 为了和content中的数据格式匹配,在浏览器中按如下方式输入:
http://localhost:9999?email=lichunlei@mycompt.com.cn,hello
新增了一个class:
HttpRequestToString.java
使用心得:除了xml,还是xml. 如果没有图形化的配置工具, 使用起来还是很麻烦的。对于mule的开发, 主要做component和transfer的开发.至于其他好处, 有待进一步学习。
- 在xml的汪洋中遨游之mule篇
- 在xml的汪洋中遨游之mule篇
- 在xml的汪洋中遨游之mule篇
- 不要淹没在信息的汪洋中。
- 两个自定义函数在vb中遨游
- 知识的汪洋
- 在Tomcat中安装Mule
- 在Tomcat中安装Mule
- Linux kernel遨游之起始篇
- 在tomcat中部署mule项目
- 遨游Hibernate之二
- 在Java的世界里遨游享受生活
- ESB之Mule ESB的使用
- spring中使用mule的配置经验总结
- spring中使用mule的配置经验总结
- 遨游
- Mule学习之路_1.MuleClient调用Mule发布的服务
- 云中遨游,ArcGIS Online托管服务之web托管要素服务
- ListView基本用法大全
- 基于VC++的GDI常用坐标系统及应用
- 任务栏显示桌面恢复
- VC异或画图
- 追羊的智慧
- 在xml的汪洋中遨游之mule篇
- 世界需要一种什么样的语言?
- 如何通过一个IP和子网掩码得到网络地址和广播地址
- JavaFX
- ListView 动态增加列标题
- MySQL 字符串函数:字符串截取
- WAP介绍
- 有意网址
- 貼一個我寫的關於生產排程的存儲過程