我有以下流程,它将定期发出REST请求,然后将数据存储到PostgreSQL数据库中。
<jdbc:postgresql-data-source name="PostgreSQL_Data_Source" user="postgres" password="*******" url="jdbc:postgresql://localhost:5432/TestDB" transactionIsolation="UNSPECIFIED" doc:name="PostgreSQL Data Source"/>
<jdbc:connector name="PostgreSQL_JDBC_Connector" dataSource-ref="PostgreSQL_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database">
<jdbc:query key="InsertRecord" value="INSERT INTO "tblJSON"("StoreHere") VALUES (CAST(#[message.payload] AS json))"/>
</jdbc:connector>
<flow name="RESTServiceScheduling" doc:name="RESTServiceScheduling">
<!-- Step 1: Generates events at a given interval of time -->
<quartz:inbound-endpoint jobName="RESTServiceJobSchedule" repeatInterval="0" doc:name="Quartz" responseTimeout="10000" cronExpression="0 0 10 ? * *">
<quartz:event-generator-job/>
</quartz:inbound-endpoint>
<!-- Step 2: This will read the REST service data -->
<http:rest-service-component httpMethod="GET" serviceUrl="http://localhost:12186/RestServiceImpl.svc/StorageUsage" />
<!-- Step 3: Transform the HTTP-streamed payload into a java.lang.String -->
<object-to-string-transformer doc:name="Object to String"/>
<!-- Step 4: Dump into the destination Database -->
<jdbc:outbound-endpoint exchange-pattern="one-way" queryKey="InsertRecord" queryTimeout="-1" connector-ref="PostgreSQL_JDBC_Connector" doc:name="Destination"/>
</flow>
这很好但我需要一种从CLI(命令行界面)开始触发作业的方法。
我该怎么办?
提前致谢
答案 0 :(得分:2)
使用HTTP入站端点来触发流并使用curl
从命令行调用它。
答案 1 :(得分:1)
我知道这是一个带有已接受答案的旧问题,但另一种方法是使用删除文件的文件端点。将文件(或其端点)设置为文件年龄为1,轮询频率为10秒。要触发流程,请使用正确的名称创建文件。不过,我发现这样做,Mule不会删除文件,直到完成流程。如果流程花费的时间超过轮询周期,则会多次拾取同一文件。为了解决这个问题,我有一个流只有一个文件入站端点,一个记录器和一个具有特定路径的VM出站端点。使用与您使用上述HTTP入站端点相同的路径使用VM入站端点。
编辑:然后,您可以在CLI中使用touch
或类似内容来创建文件。我发现这个问题正在寻找上述方法的替代方案。