Mule的基本配置元素:Endpoint、Transformer、Filter、Flow

简介: 1.Endpoint Mule的endpoint和WS中的endpoint是非常类似的,它是消息进出(读写)的入口,不同的是mule的endpoint可以基于各种不同的传输协议。 mule的endpoint分成两类:    global endpoint:全局的endpoint,一个flow或service的inbound或outbound endpoint可以通过ref属性引

1.Endpoint


Mule的endpoint和WS中的endpoint是非常类似的,它是消息进出(读写)的入口,不同的是mule的endpoint可以基于各种不同的传输协议。
mule的endpoint分成两类:
  •     global endpoint:全局的endpoint,一个flow或service的inbound或outbound endpoint可以通过ref属性引用这些endpoint.
  •      low或service内的inbound或outbound endpoint,这类endpoint仅限于flow或service内,可以认为是一种局部endpoint.
每一个endpoint都必须指明它的传输协议是什么,或者说它是什么传输类型的endpoint,指定方式有两种:
  •      在<endpoint/>元素上追加传输协议前缀:
[html]   view plain copy
  1. <http:endpoint name="in" host="localhost" port="8080" path = "services/orders" user="${user.name}" password ="${user.password}"/>  

  •     通过<endpoint/>元素的address属性指定:
[html]   view plain copy
  1. <endpoint addres="http://${user.name}:${user.password}@localhost:8080/services/orders/>  

刚开始接触mule时对inbound和outbound的endpoint可能一时不太好区分,实际上所谓的in和out都是以mule的视角来定位的,inbound指的是外部message“流入”mule的断点,也就是mule暴露给外部应用可以访问的端点,同理,outbound就是message从mule向外“流出”的端点,也就是一个可以访问的外部应用的端点。比如一种最典型也是最普遍的WS代理配置,也就是将不同物理地址的WS统一挂接到ESB,由ESB以一致的地址发布,如:

[html]   view plain copy
  1. <pattern:web-service-proxy name="weather-forecast-ws-proxy"  
  2.     inboundAddress="http://localhost:8090/weather-forecast"  
  3.     outboundAddress="http://server1:6090/weather-forecast"  
  4.     wsdlLocation="http://server1:6090/weather-forecast?wsdl" />  

在这段配置中,ESB把原物理地址为:http://server1:6090/weather-forecast 的服务经过包裹,以新的地址http://localhost:8090/weather-forecast 发布出去。作为inboundAddress,http://localhost:8090/weather-forecast是ESB对外“开放”或“发布”的端点,也就是消息流入ESB的端点。outboundAddress则是ESB路由的目的地,其往往是某个现存系统的访问入口。


2.Transformer


Transformer是负责消息传输过程中的数据转换,如从JSON对象到一个Java对象的转换:

[html]   view plain copy
  1. <json:json-to-object-transformer name="jsonToFruitCollection" returnClass="org.mule.module.json.transformers.FruitCollection">  
  2. <json:deserialization-mixin mixinClass="org.mule.module.json.transformers.OrangeMixin" targetClass="org.mule.tck.testmodels.fruit.Orange"/>  
  3. </json:json-to-object-transformer>  

3.Filter


Filter是用于配置是否要对消息进行过滤的配置项,除像wildcard-filter这样的基本Filter,Mule还有功能强大的逻辑Filter用于进行过滤条件的组合。

[java]   view plain copy
  1. <or-filter>  
  2.     <wildcard-filter pattern="*priority:1*"/>  
  3.     <and-filter>  
  4.         <not-filter>  
  5.             <wildcard-filter pattern="*region:Canada*"/>  
  6.         </not-filter>  
  7.         <wildcard-filter pattern="*priority:2*"/>  
  8.     </and-filter>  
  9. </or-filter>  

4.Flow


Flow是mule的最基本处理单元。它从一个inbound endpoint开始,对message进行了一系列的处理,然后从outbound endpoint输出。这期间会flow会使用到上述提及的多种组件参与处理,如transformer、filter等等,而且还可能调用java或其他语言实现的组件进行处理,应该说在应用集成里,flow所要实现的,正是所谓的“集成逻辑”。

目录
相关文章
|
SQL 缓存 Java
ASH Report 解析
ASH Report 解析
441 0
|
Java 数据处理
【十二】springboot整合WebService
【十二】springboot整合WebService
960 0
|
负载均衡 监控 安全
如何管理 Docker Swarm 集群和节点
【10月更文挑战第7天】
250 3
|
5月前
|
存储 人工智能 Java
Springboot集成AI Springboot3 集成阿里云百炼大模型CosyVoice2 实现Ai克隆语音(未持久化存储)
本项目基于Spring Boot 3.5.3与Java 17,集成阿里云百炼大模型CosyVoice2实现音色克隆与语音合成。内容涵盖项目搭建、音色创建、音频合成、音色管理等功能,适用于希望快速掌握Spring Boot集成语音AI技术的开发者。需提前注册阿里云并获取API Key。
|
6月前
|
前端开发 Java 数据库连接
一个完整 Java 项目常包含的各层次详解与全面解析
本内容介绍了Java项目的典型分层架构,涵盖开放接口层、终端显示层、Web层、Service层、Manager层、Mapper层及常用辅助层次,如实体层、DTO层、VO层等。通过合理划分各层职责,结合Spring Boot等框架,实现系统的高内聚、低耦合,提升可维护性与扩展性,适用于微服务与MVC架构设计。
630 0
|
8月前
|
缓存 JSON 安全
如何修复 Postman 中的 403 Forbidden 错误
当执行请求时,出现 403 Forbidden 错误可能有几个原因,在本文中,我们将学习如何修复来自 Postman 的 403 错误。
|
人工智能 自然语言处理 API
ModelScope是什么
【9月更文挑战第1天】ModelScope是什么
2363 2
|
10月前
|
安全 网络安全 数据安全/隐私保护
HTTPS与SSL证书的关系
**HTTPS 与 SSL 证书:安全通信的基石** 在互联网时代,网络安全至关重要。HTTPS 和 SSL 证书是保障网站安全通信的关键。HTTPS 是 HTTP 的安全版本,通过 SSL/TLS 协议加密数据,防止窃取和篡改。SSL 证书用于验证网站身份并加密通信,包含域名、CA、公钥等信息。两者共同确保数据加密、身份验证,提升用户信任度,并有助于 SEO 优化。部署 HTTPS 和 SSL 证书是提升网站安全性和用户体验的必要措施。
|
存储 运维 监控
实时计算Flink版最佳实践测评
实时计算Flink版最佳实践测评
285 1
|
数据安全/隐私保护
APP - 支付宝怎么延时转账?能否撤回转账?
APP - 支付宝怎么延时转账?能否撤回转账?
2970 0
APP - 支付宝怎么延时转账?能否撤回转账?