【问题标题】:Mule Esb CE sftp outbound endpoint invoke form code (custom java transformer)Mule Esb CE sftp出站端点调用表单代码(自定义java转换器)
【发布时间】:2012-11-06 06:57:22
【问题描述】:

是否可以通过代码调用 sftp 出站端点并发送文件? 我在 java 代码中(在自定义转换器中)有一个 File 对象的引用,我想调用 sftp 出站端点并传递该 File 引用。这是可行的吗? 谢谢。

【问题讨论】:

    标签: sftp esb mule


    【解决方案1】:

    给它一个FileInputStream,应该可以。

    muleContext.getClient().dispatch("sftp://...", new FileInputStream(file), null);
    

    如果没有,您必须将其传递给 byte[]

    请注意,dispatch 是异步的:调用将在 SFTP 通信发生时立即返回。如果您想等到它完成,请使用 send 并将超时作为最后一个参数。

    由于您配置了多个 SFTP 连接器,因此您必须在 URL 中指定连接器名称。假设您想使用SFTP_Upload_Connector 进行调度,则必须使用:

    muleContext.getClient().dispatch("sftp://...?connector=SFTP_Upload_Connector", new FileInputStream(file), null);
    

    如果要设置特定的目标文件名,请将其作为属性映射中名为 filename 的属性传递,例如使用:

    muleContext.getClient().dispatch("sftp://...?connector=SFTP_Upload_Connector", new FileInputStream(file), Collections.singletonMap("filename", "somen_ame"));
    

    【讨论】:

    • 现在我收到错误消息:根异常堆栈跟踪:java.lang.IllegalStateException:至少有 2 个连接器匹配协议“sftp”,因此必须在端点上指定要使用的连接器使用“连接器”属性/属性。您的配置中支持“sftp”的连接器有:SFTP_connector、SFTP_Upload_Connector、
    • 啊,你不是说你配置了几个 SFTP 连接器 :) 没问题,你只需要在 URL 中指定你想使用的连接器,我已经相应地修改了我的回复。
    • 谢谢,效果很好。还有一个问题,如何设置目标文件名?
    • 在我的回答中添加了关于filename 属性使用的注释。
    猜你喜欢
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多