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

时间:2018-01-01 09:44:49

标签: proxy wso2 wso2esb vfs

我有一个简单的基于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>

但问题是我能够使用文件名连接datetime,但是文件没有正确地移动到Out目录。它会创建一个 response.xml ,其中包含我的数据。我不知道文件名和扩展名是如何变化的。需要帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

我相信这是因为你没有设置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"/>