Camel的数据转换

2024-04-27 23:58
文章标签 数据 转换 camel

本文主要是介绍Camel的数据转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Camel的数据转换

 

在做系统集成的时候,必不可少的任务就是将数据从一种格式转换为另一种格式,再把转换后的格式发到目标系统:

Camel提供的Message translator可以分为:

■ Using a Processor
■ Using beans
■ Using <transform>

1,利用processor的方式在Apache Camel框架入门示例 已经有个介绍.blog.csdn.net/kkdelta/article/details/7231640

通过实现Processor的方法process(Exchange exchange),通常要做的步骤是,从inbound消息里得到数据,转换,再放到outbound的消息里.

XXX data = exchange.getIn().getBody(XXX.class);

//转换

exchange.getOut().setBody(yyyObject);

2,利用bean的方式,写一个java bean如下:

public class OrderToCsvBean {
    public String map(String custom) {
        String id = custom.substring(0, 9);
        String customerId = custom.substring(10, 19);
        String date = custom.substring(20, 29);
        String items = custom.substring(30);
        String[] itemIds = items.split("@");

        StringBuilder csv = new StringBuilder();
        csv.append(id.trim());
        csv.append(",").append(date.trim());
        csv.append(",").append(customerId.trim());
        for (String item : itemIds) {
            csv.append(",").append(item.trim());
        }
        return csv.toString();
    }
}

在route里的代码如下:

from("file:d:/temp/inbox1/?delay=30000").bean(new OrderToCsvBean()).to("file:d:/temp/outbox1");

Camel有一套算法来选择调用bean里的什么方法(比如说message的header里是否通过CamelBeanMethodName设置了方法名称,bean是否只有一个方法,某一个方法是否加了@Handler注解等等),这里的bean只有一个map方法,Camel会调用这个方法.

3,用route中已经定义好的transform方法,一般用的较少.

from("direct:start").transform(body().regexReplaceAll("\n", "<br/>")).to("mock:result");

4,Camel集成对许多常用的数据格式的解析:通过调用unmarshal方法可以得到解析后的结果.

CSV:

from("file:d:/temp/inbox1/?delay=30000").unmarshal().csv().process(processor).to("file:d:/temp/outbox1");

processor里可以直接得到解析后的数据:

public class CSVProcessor implements Processor {
    @Override
    public void process(Exchange exchange) throws Exception {
        System.out.println("process...");
        List csvData = (List) exchange.getIn().getBody();
        StringBuffer strbf = new StringBuffer();
        if (csvData.get(0).getClass().equals(String.class)) {//single line CSV            
            strbf.append(parseOrder(csvData));
        } else {//multiple line CSV
            for (List<String> csvOrder : (List<List<String>>) csvData) {
                strbf.append(parseOrder(csvOrder));
            }
        }
        exchange.getOut().setBody(strbf.toString());
    }

    private String  parseOrder(List<String> csvData) {        
        System.out.println(csvData.get(0) + "--" + csvData.get(1)+"--" +csvData.get(2));
        return csvData.get(0) + "--" + csvData.get(1)+"--" +csvData.get(2);
    }
}

这篇关于Camel的数据转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/941837

相关文章

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient