我试图将多个文件从源移动/上传到目的地(可以是任何东西,例如FTP或文件出站等..)通过使用下面的流程
<flow name="flow1" doc:name="f1">
<file:inbound-endpoint path="C:\input" responseTimeout="10000" doc:name="File"/>
</flow>
<flow name="flow2" doc:name="f2">
<http:inbound-endpoint address="http://localhost:8080" doc:name="HTTP" exchange-pattern="request-response"/>
<flow-ref name="flow1" doc:name="Flow Reference"/>
<file:outbound-endpoint path="C:\outputfile" responseTimeout="10000" doc:name="File"/>
</flow>
这样做的原因是我想使用CURL从CLI(命令行界面)调用作业。
但我收到以下错误:
错误:
请帮帮忙
文件endpoint是基于资源的endpoint(如ftp和s ftpendpoint),而不是基于事件的endpoint(如jms和vm)或基于tcp的endpoint(如tcp、http、udp等)
因此,您正在实施的方法不适合您的用例。如果需要按需加载文件(即,当您命中 http endpoint时),则应重构流程并使用 mule 模块-文件-utils。此模块需要添加为专家依赖项或安装在 Studio 中。您可以通过克隆git存储库来执行此操作,然后您可以按照这些说明安装生成的更新站点zip文件
完成此操作后,您的流将如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:fileutils="http://www.mulesoft.org/schema/mule/fileutils" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:file="http://www.mulesoft.org/schema/mule/file"
xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/fileutils http://www.mulesoft.org/schema/mule/fileutils/3.3/mule-fileutils.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd ">
<fileutils:config name="Fileutils" doc:name="Fileutils"/>
<flow name="FileCopier" doc:name="FileCopier">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="copy-file" doc:name="HTTP"/>
<scripting:transformer doc:name="Script">
<scripting:script engine="Groovy">
<scripting:text><![CDATA[def dir = new File("/" + message.getInboundProperty('http.relative.path'))
log.info(dir.getPath())
return Arrays.asList(dir.listFiles())]]></scripting:text>
</scripting:script>
</scripting:transformer>
<logger level="INFO" doc:name="Logger"/>
<set-variable variableName="fileNumber" value="#[payload.size()]" doc:name="Variable"/>
<foreach doc:name="Foreach">
<fileutils:copy-file config-ref="Fileutils" destinationName="#[message.payload.getName()]" destinationPath="/tmp/out/" fileName="#[message.payload.getName()]" filePath="#[message.payload.getParentFile().getPath()]" fileAge="0" doc:name="Fileutils"/>
</foreach>
<set-payload value="#[flowVars['fileNumber'] + ' file copied']" doc:name="Set Payload"/>
<http:response-builder status="200" contentType="text/plain" doc:name="HTTP Response Builder"/>
</flow>
</mule>
如果您不想使用fileutils模块,您可以将其替换为实现文件复制逻辑的脚本组件
现在可以使用下面的curl命令调用这个流
Curl超文本传输协议://${主机名}: 8081/拷贝文件/${path_to_directory_to_copy}
有关curl的文档可在此处获取
试试这个
<flow name="flow1" doc:name="flow1" initialState="stopped">
<file:inbound-endpoint path="C:\Input" responseTimeout="10000" doc:name="File"/>
<file:outbound-endpoint path="C:\outputfile" responseTimeout="10000" doc:name="File"/>
</flow>
<flow name="flow2" doc:name="flow2">
<http:inbound-endpoint address="http://localhost:8080/start" doc:name="HTTP" exchange-pattern="request-response"/>
<expression-component>
app.registry.filePickupFlow.start();
</expression-component>
<set-payload value="File successfully copied" />
</flow>
CLI 是为了转换你的工作思维,你以前习惯了在图形界面下工作,你现在应该开始习惯在命令行界面下工作。没什么理论知识,上来就跟着动手练。
本文介绍如何使用 命令行界面(CLI)创建应用程序,并将它们部署到各种原生移动平台。这个工具允许你创建新的项目,在不同的平台构建,并运行在实际设备或仿真器中。 CLI 是用于在概述中描述的跨平台的工作流的主要工具。当然,你也可以使用 CLI 来初始化项目代码,然后切换到不同的平台的SDK和 shell 工具作为后续发展。 前提 使用 CLI 前,需安装目标平台的 SDK 。(详见平台开发指南) C
当我在终端中点击curl代码时,我得到了200,所以我假设我编写testStytch的方式到目前为止还可以。但是,一旦我试图集成到java文件中,我就会收到错误的请求响应。我现在有点不知所措。https://github.com/libetl/curl这就是我所说的转换curl代码。 这是我得到的错误。https响应代理{HTTP/1.1 400错误请求[日期:星期四,2021 23:21:424
问题内容: 我必须将一些常规代码发送给仅安装了Java的某些用户(没有常规,没有$ groovy_home等)。我正在尝试从命令行调用Groovy,但是我没有运气。这是我的蝙蝠文件: 这是我的例外: 有人有线索吗?我在\ lib目录中有’groovy-all-1.6-beta-1.jar’。 问题答案: 我认为您需要在类路径中明确列出groovy jar
我不熟悉Curl和Cacerts的世界,在连接到服务器时遇到了一个问题。基本上,我需要测试从一台机器到另一台机器的https连接。我有一个URL,我需要从机器a(linux机器)连接到它。我在命令提示符下尝试了这个方法 并得到以下结果: 在浏览互联网上的一些文章时,我这样做了: 并得到了一些响应,包括服务器证书(在)。 接下来我该怎么办。我想,我只需将文本复制粘贴到
在“Command Line”选项卡,您只需将命令填入到gradle输入框. 就可以直接执行单个的Gradle命令. 或者说在您将某个命令添加到收藏夹之前,您想看看是什么效果的话,不妨来这里试试.