Mule 如何使用Quartz组件计划服务,该组件将定期调用文件上传程序?

Mule 如何使用Quartz组件计划服务,该组件将定期调用文件上传程序?,mule,mule-studio,Mule,Mule Studio,这是我先前问题的延伸。要求规定,每周三上午10点必须上传文件。从今以后,我需要一个计划来完成这项工作。我发现解决方案是带有Cron表达式的“Quartz”入站组件 但我怎么能这样做呢?因为我不能有两个“入站端点”(quartz和file) 您有两个选择: a。用处理文件处理的组件替换文件入站端点。它将由Quartz触发,从文件夹中拾取文件并将其传递到出站端点 b。不要使用Quartz端点并覆盖org.mule.transport.file.FileMessageReceiver来实现轮询文件的

这是我先前问题的延伸。要求规定,每周三上午10点必须上传文件。从今以后,我需要一个计划来完成这项工作。我发现解决方案是带有Cron表达式的“Quartz”入站组件

但我怎么能这样做呢?因为我不能有两个“入站端点”(quartz和file)


您有两个选择:

a。用处理文件处理的组件替换文件入站端点。它将由Quartz触发,从文件夹中拾取文件并将其传递到出站端点

b。不要使用Quartz端点并覆盖org.mule.transport.file.FileMessageReceiver来实现轮询文件的自定义调度


第一种选择比较简单。

如果你找不到确切的需要,下面的方法只是一个工作循环

1-您可以有2个流而不是一个流,一个用于正常入站,另一个用于quartz:inbound端点

2-您可以让您的调度程序将消息放入队列,并使用其他流从该队列中拾取消息并进行处理

3-您可以有一个带有quartz:inbound端点的组件,如下所示


希望上面的其中一个有帮助。

很抱歉,无法将此作为评论,因为它太长了,所以这里是Mule网站的
示例:

<service name="testService5">
  <description>
  The endpoint polling Job will try and perform a 'request' on any Mule endpoint. If a result is received it will be handed off to this 'testService5' service for processing. The trigger will fire every 5 minutes starting at 2pm and ending at 2:55pm, every day. during this period the job will check the file directory /N/drop-data/in every 5 minutes to see if any event data is available. The request will timeout after 4 seconds if there are no files in the directory. 
  </description>

  <inbound>
    <quartz:inbound-endpoint name="qEP5" cronExpression="0 0/5 14 * * ?" jobName="job5"
           connector-ref="quartzConnector1">
      <quartz:endpoint-polling-job>
        <quartz:job-endpoint address="file:///N/drop-data/in" timeout="4000"/>
      </quartz:endpoint-polling-job>
    </quartz:inbound-endpoint>
  </inbound>
</service>

端点轮询作业将尝试在任何Mule端点上执行“请求”。如果收到结果,则会将其交给此“testService5”服务进行处理。触发器将每5分钟触发一次,从每天下午2点开始,到下午2:55结束。在此期间,作业将每隔5分钟检查文件目录/N/drop data/,以查看是否有任何事件数据可用。如果目录中没有文件,请求将在4秒后超时。
希望以上内容有帮助

试试这个

<file:endpoint name="fileConnector" path="C:\input" pollingFrequency="5000" doc:name="File"/>

<flow name="fileUploader" doc:name="fileUploader">

        <quartz:inbound-endpoint 
        jobName="myServiceJob" 
        repeatInterval="5000" 
        cronExpression="0 0 10 ? * WED" 
        doc:name="Quartz">

        <quartz:endpoint-polling-job>
            <quartz:job-endpoint ref="fileConnector"/>
        </quartz:endpoint-polling-job>
       </quartz:inbound-endpoint>

       <file:outbound-endpoint 
        path="C:\outputfile" 
        responseTimeout="10000"        
            outputPattern="#[message.inboundProperties.originalFilename]"       
       doc:name="File"/>
</flow>


请提供点a和点b的配置好吗?我的意思是将您已有的内容分成两个流,每个入站都有一个流,两个出站都有一个流。如果那不是你想搜索的,看看是否有帮助,你能验证一下我在编辑部分输入的流程是否就是你所说的流程吗?我认为这是可行的,我已经添加了一个示例作为回答,因为它太长,无法发表评论。请您告诉我们connector-ref…什么是connector?它在这里的文档中,不确定您是否有mule的帐户。
<file:endpoint name="fileConnector" path="C:\input" pollingFrequency="5000" doc:name="File"/>

<flow name="fileUploader" doc:name="fileUploader">

        <quartz:inbound-endpoint 
        jobName="myServiceJob" 
        repeatInterval="5000" 
        cronExpression="0 0 10 ? * WED" 
        doc:name="Quartz">

        <quartz:endpoint-polling-job>
            <quartz:job-endpoint ref="fileConnector"/>
        </quartz:endpoint-polling-job>
       </quartz:inbound-endpoint>

       <file:outbound-endpoint 
        path="C:\outputfile" 
        responseTimeout="10000"        
            outputPattern="#[message.inboundProperties.originalFilename]"       
       doc:name="File"/>
</flow>