如何从CLI(命令行界面)触发Mule作业?

时间:2013-01-23 12:04:49

标签: mule mule-studio

我有以下流程,它将定期发出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(命令行界面)开始触发作业的方法。

我该怎么办?

提前致谢

2 个答案:

答案 0 :(得分:2)

使用HTTP入站端点来触发流并使用curl从命令行调用它。

答案 1 :(得分:1)

我知道这是一个带有已接受答案的旧问题,但另一种方法是使用删除文件的文件端点。将文件(或其端点)设置为文件年龄为1,轮询频率为10秒。要触发流程,请使用正确的名称创建文件。不过,我发现这样做,Mule不会删除文件,直到完成流程。如果流程花费的时间超过轮询周期,则会多次拾取同一文件。为了解决这个问题,我有一个流只有一个文件入站端点,一个记录器和一个具有特定路径的VM出站端点。使用与您使用上述HTTP入站端点相同的路径使用VM入站端点。

编辑:然后,您可以在CLI中使用touch或类似内容来创建文件。我发现这个问题正在寻找上述方法的替代方案。