当前位置: 首页 > 知识库问答 >
问题:

Apache Camel数据格式与类型转换器

东郭元魁
2023-03-14

我通读了《骆驼》这本书,但真的不明白如何区分这两种类型,它们看起来是一样的,都试图将一种数据类型转换为另一种数据类型。任何人都可以进一步详细说明在何种情况下,我应该使用特定的一个而不是另一个?这两者有什么区别吗?

数据格式

http://camel.apache.org/data-format.html

伪例子:

from("file://riders/inbox")
.marshal().csv()
.to("activemq:queue:inbox");

类型转换器

http://camel.apache.org/type-converter.html

伪例子:

from("file://riders/inbox")
.convertBodyTo(String.class)
.to("activemq:queue:inbox");

共有2个答案

澹台成龙
2023-03-14

Camel以可插拔的方式支持不同的数据格式。这意味着Camel可以对给定格式的消息进行封送或解封。Camel本机支持Avro、JSON、protobuf、JAXB、XmlBeans、XStream、JiBX、SOAP等。

Camel知道endpoint的预期格式和类型,因为此Camel寻找可以将消息从一种类型转换为另一种类型的类型转换器。您甚至可以像POJO类一样使用自己的Type Converter。

在下面的示例中。convertBodyTO首先将流转换为字符串,我们还可以通过设置charset参数来更改流的编码。

例子-

from("file://riders/inbox")
.convertBodyTo(String.class,"UTF-8")
.to("activemq:queue:inbox");

<代码>。封送处理()。csv()将其转换为csv字符串格式

当必须将消息转换为JSON、YAML、JAXB等特定数据类型时,可以使用Dataformat,但不能使用Dataformat将消息转换为用户定义的数据类型。

张兴旺
2023-03-14

如果要将类型转换为任何其他类型,请使用类型转换器。例如,您可以使用类型转换器将Cat类转换为Dog类。

元帅/解封官来自连载学校。基本上,您可以将内存中的任何数据结构映射到字节流(例如,可能要将其保存在磁盘中)。Apache Camel也反映了同样的情况(尽管他们已经将其扩展到一些常用的格式,如XML、HL7等)。这些也是字符串(大部分)或类型,可以很容易地表示为字节流(例如protobuf),可以很容易地序列化。

在Apache Camel中,如果您注意到,如果您使用封送/解封送,则它不是通用的。输入或输出类型是固定的-意味着您无法从类型转换为任何类型。但类型转换器并非如此-您可以将类型转换为任何类型(使用默认类型转换器或必须提供实现)。

您可以将列表/散集视为类型固定的类型转换的特定情况(通常只有Camel人员会提供实现)。正如您在示例中看到的,列表(). csv()是Camel DSL的一部分。

但如果使用类型转换器,则可以自由添加自己的逻辑。这是通用的。

 类似资料:
  • 在编写可视化界面项目时,我们通常需要对数据进行类型转换、验证及格式化。 一、在gen-wo-xue-spring/content/Spring3之前,我们使用如下架构进行类型转换、验证及格式化: 流程: ①:类型转换:首先调用PropertyEditor的setAsText(gen-wo-xue-spring/content/String),内部根据需要调用setValue(Object)方法进行

  • JavaScript是一种动态类型语言,变量是没有类型的,可以随时赋予任意值。但是,数据本身和各种运算是有类型的,因此运算时变量需要转换类型。大多数情况下,这种数据类型转换是自动的,但是有时也需要手动强制转换。 强制转换 Number函数:强制转换成数值 String函数:强制转换成字符串 Boolean函数:强制转换成布尔值 自动转换 自动转换为布尔值 自动转换为字符串 自动转换为数值 小结 加

  • Excel转KML        在“数据处理”菜单栏中,点击“Excel转KML”,弹出对话框,点击打开XLS,选择要转换的Excel文件(可以添加LSV文件夹下示例数据中的EXCEL2KML示例数据.xls进行测试),读取完成后,可以在上方的表格里看到Excel里的信息。在Excel表格内容的下面分了两块,左侧一块为经纬度和气泡内容的选择,右侧一块是对要生成的kml图层的风格的设置。    

  • 问题内容: 我的数据库是Postgres8。我需要将数据类型转换为另一个。这意味着column数据类型之一是并且需要在语句中将其与Postgres一起转换。 当前,我获取字符串值并将其转换为Java语言。 有什么办法吗?示例代码将不胜感激。 问题答案: cast(varchar_col AS int) – SQL standard 要么 这些语法变体在 任何地方 (几乎)都有效。第二种在特殊情况下

  • 主要内容:1、隐式类型转换,2、显式类型转换数据类型转换就是将一种类型的数据转换为另一种类型,在 C# 中有两种形式的类型转换方式,分别是隐式类型转换和显示类型转换,下面就来详细介绍一下。 1、隐式类型转换 隐式类型转换是由 C# 以类型安全的方式执行的,转换的过程中不会导致数据丢失,例如从较小的整数类型(例如 int)转换到较大的整数类型(例如 long),从派生类转换为基类。 隐式转换不需要我们编写额外的代码,下例中演示了如何使用隐式类

  • 虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换。 比如说,我们想通过使用 print() 函数输出信息“您的身高:”以及浮点类型 height 的值,如果在交互式解释器中执行如下代码: >>> height = 70.0 >>> print("您的身高"+height) Traceback (mos