1

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

我该怎么做?

提前致谢

4

2 回答 2

2

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

于 2013-01-23T16:27:49.700 回答
1

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

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

于 2014-10-31T17:44:32.900 回答