Как прочитать список имен файлов из БД и загрузить их на FTP-сайт
Мне нужно запланировать задание, чтобы прочитать список имен файлов из БД и загрузить их на FTP-сайт. Как мне это сделать в WSO2 ESB?
Спасибо
Обновления (19.07.16): на основе приведенных предложений я написал хранимую процедуру для возврата всех имен файлов в формате xml. Теперь, когда мне нужно выяснить, как анализировать этот результат в формате xml, можно использовать ftp с помощью fileconnector. Пожалуйста, дайте мне знать, если мой подход работоспособен. Спасибо большое за вашу помощь.
<proxy name="FileUpload2CDGPS" startOnLoad="true" trace="disable" transports="https http" xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<sequence key="FileLookupSeq"/>
<sequence key="SendFile2VendorSeq"/>
<send/>
</inSequence>
<outSequence/>
<faultSequence>
<drop/>
</faultSequence>
</target>
</proxy>
<sequence name="FileLookupSeq" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<log description="LogMessage" level="custom">
<property name="message" value="Find CDR files to upload"/>
</log>
<dblookup description="Get CDR files to be upload">
<connection>
<pool>
<password>***</password>
<driver>org.postgresql.Driver</driver>
<url>jdbc:postgresql://localhost:5432/esbcdrdb</url>
<user>***</user>
</pool>
</connection>
<statement>
<sql><![CDATA[SELECT * FROM find_cdr_file_to_upload(1)]]></sql>
<result name="xml_file" column="find_cdr_file_to_upload"/>
</statement>
</dblookup>
</sequence>
<sequence name="SendFile2VendorSeq" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<iterate attachPath="//files/files-set" description=""
expression="//files/files-set/file" preservePayload="true">
<target>
<sequence>
<property description="fileName"
expression="//files/files-set/file/name" name="fileName"
scope="default" type="STRING"/>
<property description="fileId"
expression="//files/files-set/file/id" name="fileId"
scope="default" type="STRING"/>
<property description="fileSource"
expression="//files/files-set/file/path" name="fileSource"
scope="default" type="STRING"/>
<property description="vendorId"
expression="//files/files-set/file/vendor-id" name="vendorId"
scope="default" type="STRING"/>
<property description="vendorDest"
expression="//files/files-set/file/vendor-dest"
name="vendorDest" scope="default" type="STRING"/>
<fileconnector.copy>
<source>{$ctx:fileSource}</source>
<destination>{$ctx:vendorDest}</destination>
<filePattern>{$ctx:fileName}</filePattern>
</fileconnector.copy>
</sequence>
</target>
</iterate>
</sequence>
1 ответ
Решение
Есть много способов сделать это.
- Вы можете напрямую написать свое требование в задаче расписания, которая обрабатывает соединение с БД и загружает файл на FTP-сайт. Как написать расписание задачи
- Или Вы можете вызвать прокси через образец запланированной задачи, можно найти здесь. А внутри прокси вы можете подключиться к базе данных и получить необходимые данные и загрузить их на FTP с помощью VFS, или вы можете написать собственный посредник, который будет выполняться внутри прокси.