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

Apache camel CamelSftpSourceConnector拆分文件

戚森
2023-03-14

共有1个答案

公冶昆杰
2023-03-14

您可以使用来自EIP模式的拆分器将消息拆分为更小的部分。一种简单的方法是使用bean,它具有接受exchange并返回消息列表的方法。

简单的例子:

from(SFTP_URI)
    .routeId("splitFileAndSendToKafka")
    .split(method(new MySplitter()))
        // ... do stuff
        .to(KAFKA_URI)
    .end()
    .log("file split and sent to kafka");
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.impl.DefaultMessage;

public class MySplitter {

    public List<Message> splitExchange(Exchange exchange) {

        String body = exchange.getMessage().getBody(String.class);
        String[] parts = body.split(";");

        List<Message> messages = new ArrayList<>();
        for (int i = 0; i < parts.length; i++) {
            
            Message msg = new DefaultMessage(exchange.getContext());
            msg.setBody(parts[i]);
            msg.setHeader("partIndex", i);
            messages.add(msg);
        }
        return messages;
    }
}

(使用Camel2.x,所以Camel3.x可能会有一些变化)

 类似资料:
  • 拆分项目文件 到目前为止我们自定义了一个build.gradle和settings.gradle文件,随着你添加越来越多的子项目和任务到build.gradle中,代码的维护性将会下降。通过给每个子项目建立一个单独的build.gradle文件可以解决这个问题。 接下来我们在每个子项目的目录下创建一个build.gradle文件,目录如下: 现在你可以把构建逻辑从原先的build脚本中拆分开来放到

  • 我只有一个具有大xml文件最后顺序的文件,而不是许多小xml文件。你能告诉我出了什么问题吗?太感谢你们了!

  • 我有一个骆驼路由,它需要将一个大文件(600k行ID)拆分为600k个单独的消息,然后将它们推送到Activemq队列中。我如何从骆驼侧优化路线以提高吞吐量?我目前达到了到AMQ的大约150个消息/秒的吞吐量。以下是当前的路线。如有任何建议,不胜感激!

  • 问题内容: 我只需要此XML的HEADLINE,仅在标记之间。还必须连续不断地打印消息。我怎样才能做到这一点。 问题答案: 我将为此使用javax.xml.xpathJava SE 5中包含的API。

  • 我正在尝试用Python以编程方式拆分wav文件。基于stackoverflow的提示以及Python wave模块的文档,我将执行以下操作 我迭代了许多不同的起始值和结束值,并以这种方式从原始文件中提取音频块。奇怪的是,这种技术对某些块非常有效,而对其他块产生垃圾白噪声。此外,没有明显的模式表明起始位置和结束位置会产生白噪声,只是输入文件会持续产生白噪声。 有人以前经历过这种行为吗?或者知道我做