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

Apache Camel拆分器返回字符串

孙承弼
2023-03-14
<split streaming="true">
  <tokenize token="@"/>
  <to uri="validateResubmitTransactionIdProcessor"/>
</split>
epublic class ValidateResubmitTransactionIdProcessor implements Processor {
public void process(Exchange exchng) throws Exception {
    Object[] args =  exchng.getIn().getBody(Object[].class);
}}

eCaused by:org.apache.camel.InvalidPayloadException:没有类型为:org.apache.camel.Exchange的可用正文,但其值为:11484类型为:java.lang.String on:message:11484。原因:没有类型转换器可用于将类型:java.lang.String转换为所需的类型:org.apache.camel.exchange(值为11484)。交换[消息:11484]。由:[org.apache.camel.notypeConversionAvailableException-没有类型转换器可用于将类型:java.lang.String转换为所需类型:org.apache.camel.impl.messagesupport.getMandatoryBody(messagesupport.java:101)和值为11484的required类型:org.apache.camel.builder.expressionBuilder$35..camel.impl.converter.basetypeConverterRegistry.mandatoryConvertto(basetypeConverterRegistry.java:169)在org.apache.camel.core.osgi.osgitypeConverter.mandatoryConvertto(osgitypeConverter.java:110)在org.apache.camel.impl.messagesupport.getMandatoryBody(messagesupport.java:99)nter

我不确定我是否使用了正确的方式拆分器。另外,请知道如何将java.lang.String转换为Exchange。这似乎没有得到骆驼的支持。

共有1个答案

魏元白
2023-03-14

拆分器EIP创建了一种循环,每个令牌都会调用处理器。因此,交换的主体包含一个简单的字符串,而不是列表。

更新:请参见此示例:

    CamelContext context = new DefaultCamelContext();
    context.addRoutes(new RouteBuilder() {
        public void configure() {
            from("direct:start")
            .split().tokenize("@").streaming()
            .process(new MyProcessor())
            ;
        }
    });
    context.start();
    context.createProducerTemplate().sendBody("direct:start", "1@2@3");

您的处理器方法可以如下所示:

public void process(final Exchange exchange) throws Exception
{
    System.out.println(exchange.getIn().getBody());
}
 类似资料:
  • 问题内容: 我需要找到一种方法来获取具有最高versionNumber的数据。 这是我的数据库设计: 可以说我有以下记录: 我需要获取版本号为2.2.1的记录。需要一些帮助的SQL :) 感谢您的任何帮助 问题答案: 试试这个: 灵感来自:http : //www.sql-server-helper.com/tips/sort-ip-address.aspx 在软件开发中,通常会找到一个包含两个数

  • 我试图编写一个代码,将一个无空格的字符串拆分成有意义的单词,但当我给出“arealways”这样的句子时,它返回['a'、'real'、'ways'],我想要的是['are'、'always'],我的字典包含了所有这些单词。我怎样才能编写一个代码,一直回溯到找到最佳匹配? 返回“a”、“real”、“ways”的代码: splitter.java: Trie.java: WordSplitter类

  • 问题 你想拆分一个字符串。 解决方案 使用 JavaScript 字符串的 split() 方法: "foo bar baz".split " " # => [ 'foo', 'bar', 'baz' ] 讨论 String 的这个 split() 方法是标准的 JavaScript 方法。可以用来基于任何分隔符——包括正则表达式来拆分字符串。这个方法还可以接受第二个参数,用于指定返回的子字符串数

  • 问题内容: 我想将字符串拆分为单个字符。所以我做: 但这产生了: 在其他语言(例如Ruby)中执行相同操作时,我不习惯使用第一个空字符串。它背后的逻辑是什么? 问题答案: 你为什么要用这个?使用可能会更好。 我知道一个会返回一个字符串数组,而另一个会给您一个字符数组。由于您希望分别使用每个字符,因此我假设这与您的代码无关。

  • 问题:我可以在给定的正则表达式上拆分字符串,但相同的正则表达式在匹配具有相同正则表达式的方法时失败。 问题:如何使用用于拆分同一字符串的同一正则表达式在matches方法上返回true? 查看操作中的正则表达式

  • 我从基于apache-camel-spark的rest接口获得一个json数组作为输入。开始时,我想通过apache camels路线分割json-array来处理每个元素。我该怎么做? 我的测试输入json: 对于这个问题,我在stackoverflow上找到了一些间接描述的问题: link 1, link 2, link 3。 根据这些示例,我尝试了以下骆驼路线: 当我这样做时,我总是得到以下