无法在输出目录 WSO2 ESB 中发送文件

Unable to send file in out directory WSO2 ESB

我有一个简单的基于 vfs 的代理服务。我想轮询文件 "DiscardedContracts.csv" 并且我想用文件名添加时间并将其移动到 Out 目录。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="ContractsDiscardedFileReader"
       startOnLoad="true"
       statistics="disable"
       trace="disable"
       transports="vfs">
   <target>
      <inSequence>
         <property expression="fn:concat('DiscardedContracts', get-property('SYSTEM_DATE', 'yyMMddHHmmss'), '.csv')"
                   name="transport.vfs.ReplyFileName"/>
         <log separator="==-------Going to move discarded contract file in out directory---------=="/>
         <log level="custom" separator="==-------File--------==">
            <property expression="fn:concat('DiscardedContracts', get-property('SYSTEM_DATE', 'yyMMddHHmmss'), '.csv')"
                      name="transport.vfs.ReplyFileName"/>
         </log>
         <property name="OUT_ONLY" scope="default" type="STRING" value="true"/>
         <send>
            <endpoint name="FileEpr">
               <address uri="vfs:file:///opt/file/contracts/Out/"/>
            </endpoint>
         </send>
      </inSequence>
      <faultSequence>
         <sequence key="DeliveriesFileProcessingFaultSequence"/>
      </faultSequence>
   </target>
   <parameter name="transport.vfs.ContentType">text/plain</parameter>
   <parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
   <parameter name="transport.vfs.CreateFolder">true</parameter>
   <parameter name="transport.vfs.MoveAfterFailure">vfs:file:///opt/file/contracts/Fail</parameter>
   <parameter name="sequential">true</parameter>
   <parameter name="transport.vfs.LockReleaseSameNode">false</parameter>
   <parameter name="transport.vfs.Build">false</parameter>
   <parameter name="transport.vfs.MoveAfterProcess">vfs:file:///opt/file/contracts/Out/</parameter>
   <parameter name="coordination">true</parameter>
   <parameter name="transport.vfs.Streaming">true</parameter>
   <parameter name="transport.PollInterval">30</parameter>
   <parameter name="transport.vfs.FileURI">vfs:file:///opt/file/mysql</parameter>
   <parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
   <parameter name="transport.vfs.AutoLockRelease">false</parameter>
   <parameter name="transport.vfs.FileSortAttribute">lastmodifiedtimestamp</parameter>
   <parameter name="transport.vfs.FileSortAscending">true</parameter>
   <parameter name="transport.vfs.DistributedLock">false</parameter>
   <parameter name="transport.vfs.FileNamePattern">.*.csv</parameter>
   <parameter name="transport.vfs.Locking">disable</parameter>
   <description/>
</proxy>

但问题是我可以将日期时间与文件名连接起来,但是文件没有正确地移动到 Out 目录。它创建了一个包含我的数据的 response.xml。我不知道文件名和扩展名是如何变化的。需要帮助,谢谢。

我相信这是因为你没有设置transport.vfs.ReplyFileName。 (你只记录了它。)它的默认值是response.xml

如果您从日志中介中取出 transport.vfs.ReplyFileName 属性,它应该可以工作。

参考:https://docs.wso2.com/display/ESB500/VFS+Transport

更新:将scope="transport"设置为属性,如下所示。

<property expression="fn:concat('DiscardedContracts', get-property('SYSTEM_DATE', 'yyMMddHHmmss'), '.csv')" 
    scope="transport"
    name="transport.vfs.ReplyFileName"/>