gpt4 book ai didi

mule - 如何覆盖 mule SFTP 端点的默认行为?

转载 作者:行者123 更新时间:2023-12-04 23:58:41 25 4
gpt4 key购买 nike

我需要覆盖 mule SFTP 入站端点的默认行为。我有骡子流从 SFTP 位置选择文件并进行一些交替并发送到第三方服务。我在文件上传中没有 Controller 。所以同一时间可能有多个文件。

我需要在那里实现节流机制。例如:Mule flow 需要在一次投票中选择最旧的 10 个文件。所以我打算覆盖 mule SFTP 客户端的默认行为来实现这一点。我正在使用 JAVA。

最佳答案

您可以利用 Transport Service Override : 实现你自己的 SftpMessageReceiver并配置您的 SFTP 连接器以使用此自定义组件,例如:

<sftp:connector name="sftp-connector" ... />
...
<service-overrides messageReceiver="com.mycomp.MySftpMessageReceiver" />
</sftp:connector>

我建议您覆盖 poll()您正在使用的 Mule 版本的现有接收器的功能。对于 Mule 3.9,它将检索所有文件并调用 routeFile()对于每个找到的文件。您可以实现自己的 poll(),它会选择 10 个最近的文件并重现相同的行为。我不会在这里提供完整的代码示例,但您可以从现有功能(检索、锁定、路由)中获取灵感来实现您自己的功能。例如:

public class MySftpMessageReceiver extends SftpMessageReceiver {
...
@Override
public void poll() throws Exception {
//poll 10 oldest files
//...
//route them
for (String file : files){
//...
routeFile(file);
}
}
...
}

注意覆盖现有的 SftpMessageReceiver 只是一种方法。这个想法是实现您自己的 MessageReceiver 并使用上述服务覆盖。

编辑:根据@NNishanthi Wickramasinghe 请求检索私有(private) SftpReceiverRequesterUtil:您可以创建自己的实例或检索由 super 构造函数创建的实例。

查看代码,您可以看到它是使用 protected createSftpReceiverRequesterUtil() 函数创建的,并受构造函数影响到私有(private)字段。您可以在自己的构造函数中调用此函数来复制此行为,或者为避免重复覆盖此方法以检索实例化对象并将其影响到您自己的字段,例如:

private SftpReceiverRequesterUtil sftpRRUtil = null;
...
@Override
protected SftpReceiverRequesterUtil createSftpReceiverRequesterUtil(InboundEndpoint endpoint) {
sftpRRUtil = super.createSftpReceiverRequesterUtil(endpoint);
return sftpRRUtil;
}

关于mule - 如何覆盖 mule SFTP 端点的默认行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47787080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com