我正在尝试这个教程从这个给定的链接https://ei.docs.wso2.com/en/latest/micro-integrator/use-cases/tutorials/file-processing/
下面是文件代理定义
<?xml version="1.0" encoding="UTF-8"?>
<proxy name="daily-file-proxy" startOnLoad="true" transports="vfs" xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<log level="full"/>
<clone>
<target sequence="daily-file-file-write-sequence"/>
<target sequence="daily-file-mail-notification-sequence"/>
<target sequence="daily-file-db-sequence"/>
</clone>
</inSequence>
<outSequence/>
<faultSequence/>
</target>
<parameter name="transport.PollInterval">15</parameter>
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter name="transport.vfs.MoveAfterProcess">$FILE:FILE_DAILY_PROCESS</parameter>
<parameter name="transport.vfs.FileURI">$FILE:FILE_DAILY_DOWNLOAD</parameter>
<parameter name="transport.vfs.MoveAfterFailure">$FILE:FILE_DAILY_FAILURE</parameter>
<parameter name="transport.vfs.FileNamePattern">.*.txt</parameter>
<parameter name="transport.vfs.ContentType">text/plain</parameter>
<parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
</proxy>
我还声明了文件中的所有参数。
当我在file:FILE_DAILY_PROCESS中放入txt文件时,这段代码在Integration Studio中正常工作,它在15秒内处理并将数据放入数据库。
然后将项目打包为car文件,部署到centos服务器中的微集成器wso2上。
我检查了日志,一切都正确部署,没有错误(wso2carbon.log和wso2-error.log没有显示任何错误)
我认为wso2ei无法看到声明
的文件夹下面是file.properties
中声明的参数FILE_DAILY_DOWNLOAD=file:///root/file-processing/daily-download/202107
FILE_DAILY_PROCESS=file:///root/file-processing/daily-process
FILE_DAILY_PROCESS_URI=vfs:file:///root/file-processing/daily-process
FILE_DAILY_FAILURE=file:///root/file-processing/daily-failure
我终于把问题弄明白了。wso2无法看到ssh用户root下的特定文件夹。它必须在/home/wso2文件夹下,这样VFS监听器只能看到/home/wso2文件夹
下可用的文件夹所以使用更新设置
FILE_DAILY_DOWNLOAD=file:///home/wso2/file-processing/daily-download/202107
FILE_DAILY_PROCESS=file:///home/wos2/file-processing/daily-process
FILE_DAILY_PROCESS_URI=vfs:file:///home/wso2/file-processing/daily-process
FILE_DAILY_FAILURE=file:///home/wso2/file-processing/daily-failure