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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在目录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"/>

以上是关于无法在目录WSO2 ESB中发送文件的主要内容,如果未能解决你的问题,请参考以下文章

WSO2 ESB 5.0.0 配置 JMS 传输(ActiveMQ)- 队列消息生产与消费

WSO2 ESB 5.0.0 配置 JMS 传输(ActiveMQ)- 队列消息生产与消费

WSO2 ESB 4.9.0 无法在启用安全保险库的情况下启动

WSO2 ESB:后端恢复后地址端点不恢复发送

在 WSO2 ESB 5.0.0 中使用 MyBatis 框架

WSO2 ESB聚类概念