mule in action翻译24 : 4.3 使用核心转换器
mule的核心库有很多转换器。他们提供不依赖传输的转换功能,比如压缩、加密、抽取payload值。本节将讲述六个常用的payload类型和属性转换器。
1、处理字节:使用字节转换器对字节和流类型的payload进行类转换。
2、压缩数据:使用gzip压缩或解压缩payload。
3、修改属性:和转换器一起工作,用来修改消息属性。
4、使用表达式语言:使用能计算表达式的转换器创建一个新的payload。
5、扩展消息(Enriching messages):不需要完整的转换它而在消息中增加更多的信息。
6、自动转换:自动选择使用最佳的转换器来得到期望的结果。
先来看一对处理字节的转器。
4.3.1 处理字节
字节数据是不同系统交换数据的细粒度数据单元。在这些系统中字节的处理往往以流或数组的方式,
前者(流)适合大批量的数据,后者适合数据量小的情况。
mule的核心库中,转换器ByteArrayTo的输入既可以是流也可以是byte数组。这意味着在endpoint中声明的可以处理流的转换器,也将能直接处理流而不需要首先转换为数组。
先来看功能多样的 byte-array-to-object-transformer。如果这个转换器接受了字节类型的payload--一个序列化后的Java对象,输出结果是一个反序列化后的对象。如果payload不是一个序列化对象,转换器将使用这些字节数据创建一个String。下面的代码展示了这个转换器,配置为反序列化字节数组或流为一个java.util.Map的实例。
<byte-array-to-object-transformer name="ByteArrayToMap" returnClass="java.util.Map"/>
这个转换器使用在任何的不是接受序列化的java.util.Map对象的 endpoint 中时,会抛出TransformerException异常,并会停止对消息的处理。
另一个对应的转换器是object-to-byte-array-transformer。正如你猜想的一样,这个是进行反向处理的;它把字符串和流转换为字节数组,它使用Java标准的序列化机制吧可序列化的payload转换为字节数据。注意,不可序列化的payload将阻塞这个转换器,因为对他不可能执行任何的转换。下面展示了一个简单的转换器的声明,它复制所有的流的输入到一个字节数组。
<object-to-byte-array-transformername="ObjectToByteArray" />
注意: 有时对一个对象你可能需要一个让人易读的描述,比如当需要进行调试时。为了正确说明类型你可以使用object-to-string来替代object-tobyte-array,object-to-string会自动的“考虑”编码。
复制全部的输入流数据到数组会对mule实例的内存造成重大影响。这不会轻易的发生。你为什么会做那么傻的事情?当处理异步事件时,你不能保证在消息处理过程中输入流总是保持打开的。如果 inbound endpoint认为它已经接受完了响应,它将关闭连接,关闭所有打开的流。在接受完消息后,转换器再把payload填充到消息中,这样的处理是安全的。这是一种从传输(transport)分离消息的一种方式。
最佳实践 一定要考虑你使用的转换器对内存的影响。
最佳实践 在处理瞬时数据时可能没有足够的时间处理完整个流(比如 FTP 数据),这时可以考虑使用
file, VM或JMS传输把数据发送到一个可靠的outbound endpoint,在哪里进行处理。
如果你列出所有mule的核心的字节相关的转换器,你会发现还会有其他几个。这里把他们罗列出来:
1、byte-array-to-serializable-transformer 和 serializable-to-bytearray-transformer 。
这些是byte-array-toobject-transformer和object-to-byte-array-transformer的特殊版本,他们只能转换为
序列化的Java对象或从序列化的Java对象转换为来。
2、byte-array-to-hex-string-transformer 和 hex-string-to-byte-arraytransformer。
这对转换器和别的转换器无关。顾名思义,他们从(或转换为)16进制数据。
3、 byte-array-to-string-transformer 和 string-to-byte-array-transformer
这两个转换器会依赖当前的编码方式。
相关推荐
Mule in Action, Second Edition is a totally-revised guide covering Mule 3 fundamentals and best practices. It starts with a quick ESB overview and then dives into rich examples covering core concepts ...
《Mule in Action》是一本专注于Mule ESB(企业服务总线)的入门教程,旨在帮助读者系统地学习和理解这一强大的集成平台。Mule ESB是开源领域中的一个重量级选手,常用于构建灵活、可扩展的企业级集成解决方案。这...
《Mule in Action》一书深入探讨了Mule——一个轻量级消息框架与高度分布式的对象代理系统,为读者提供了全面的理论与实践指导。本书由David Dossot和John D'Emic共同撰写,旨在帮助开发者掌握Mule的核心功能与配置...
### Mule in Action 第二版 英文正式版 关键知识点概述 #### 一、书籍简介与背景 《Mule in Action》第二版是一本详细介绍Mule ESB(Enterprise Service Bus)这一著名开源框架的书籍。该书由David Dossot、John D...
mule in action 和doc文档详细介绍 Mule的核心组件是UMO(Universal Message Objects,从Mule2.0开始UMO这一概念已经被组件Componse所代替),UMO实现整合逻辑。UMO可以是POJO,JavaBean等等。它支持30多种传输协议...
总体而言,Mule in Action, Second Edition这本书是关于Mule ESB使用和集成实践的权威指南,涵盖了从基础概念到高级特性的广泛主题。本书适合于那些希望深入学习和利用Mule ESB进行企业级应用集成的开发人员和架构师...
Mule in Action is acomprehensive tutorial designed for working Java developers. This authoritativebook explores the architecture and the main features of version Mule 2 throughnumerous running ...
《Mule in Action》这本书是关于Mule ESB(企业服务总线)的权威指南,由David Chappell和James Strachan等作者撰写。Mule ESB是一种开源的集成平台,它允许开发者轻松地连接各种系统、服务和应用程序,实现数据的...
《Mule in Action》是关于Mule ESB的实战指南,该书深入浅出地介绍了如何使用Mule这一强大的企业服务总线(ESB)进行应用程序集成。Mule ESB以其用户基数庞大、文档详尽以及社区活跃而备受赞誉,是企业级集成解决...
《Mule in Action》第二版是一本全面介绍如何使用Mule ESB进行高效集成开发的书籍,由David Dossot、John D’Emic和Victor Romero共同编写。 #### 二、Mule ESB的关键特性 **1. 消息处理:** Mule ESB支持多种消息...
Mule in Action是一本关于Mule ESB(企业服务总线)的实战指南,旨在为读者提供深入的实践知识和案例分析。ESB作为一种流行的中间件技术,用于实现不同系统之间的服务集成。Mule作为一个开源的ESB解决方案,通过其...
MULE IN ACTION Mule是一个企业服务总线(ESB)消息框架,它为集成不同系统和应用程序提供了一种轻量级的、易于使用的方法。Mule的设计哲学围绕着灵活性和可扩展性,通过其高度可插拔的架构,支持多种传输协议和...