读取通配符文件名的 Quartz 作业仅获取一个文件

2024-03-29

使用骡子 3.7。如果我的目录中有 5 个扩展名为 .csv 的文件,则以下代码仅选取这五个文件之一。如果我删除石英触发器并将其设为普通文件:inbound-endpoint,它将拾取所有五个文件。看起来很简单,但并没有按预期工作。
Thanks,
-- Don

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" xmlns:context="http://www.springframework.org/schema/context" xmlns:quartz="http://www.mulesoft.org/schema/mule/quartz"
    xmlns:file="http://www.mulesoft.org/schema/mule/file" 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.6.1"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd 
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd 
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-current.xsd http://www.mulesoft.org/schema/mule/quartz http://www.mulesoft.org/schema/mule/quartz/current/mule-quartz.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.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">
    <file:connector name="fileInConnector" autoDelete="false" streaming="true" validateConnections="true" doc:name="FileConnector" />
    <file:endpoint name="fileInEndpoint" path="\\\\c:\\scratch" connector-ref="fileInConnector" doc:name="FileEndpoint">
        <file:filename-wildcard-filter pattern="*.csv" />
    </file:endpoint>
    <flow name="fileUploader">
        <quartz:inbound-endpoint jobName="getFilesTrigger" cronExpression="/15 * * * * ?" doc:name="Quartz">
            <quartz:endpoint-polling-job>
                <quartz:job-endpoint ref="fileInEndpoint" />
            </quartz:endpoint-polling-job>
        </quartz:inbound-endpoint>
        <logger message="Filename=#[message.inboundProperties.originalFilename]" level="INFO" doc:name="Logger" />
    </flow>
</mule>  

这是触发两次后的日志:
信息 2015-10-05 15:09:30,063 [scheduler-quartzcronfilepickup_Worker-1] org.mule.lifecycle.AbstractLifecycleManager:初始化:'fileInConnector.requester.2009817243'。对象是:FileMessageRequester
信息 2015-10-05 15:09:30,069 [scheduler-quartzcronfilepickup_Worker-1] org.mule.lifecycle.AbstractLifecycleManager:开始:'fileInConnector.requester.2009817243'。对象是:FileMessageRequester
信息 2015-10-05 15:09:30,117 [[quartzcronfilepickup].fileUploader.stage1.02] org.mule.api.processor.LoggerMessageProcessor:文件名=D1.csv
信息 2015-10-05 15:09:45,015 [scheduler-quartzcronfilepickup_Worker-2] org.mule.lifecycle.AbstractLifecycleManager:初始化:'fileInConnector.requester.636902426'。对象是:FileMessageRequester
信息 2015-10-05 15:09:45,016 [scheduler-quartzcronfilepickup_Worker-2] org.mule.lifecycle.AbstractLifecycleManager:开始:'fileInConnector.requester.636902426'。对象是:FileMessageRequester
信息 2015-10-05 15:09:45,022 [[quartzcronfilepickup].fileUploader.stage1.02] org.mule.api.processor.LoggerMessageProcessor:文件名=D1.csv


使用轮询文件入站端点和 Quartz 入站端点轮询文件端点之间有一个主要区别:前者使用消息接收者,而后者使用消息请求者。作为两种不同的野兽,它们的实施方式可能会截然不同。

而且,你猜怎么着?文件正是如此。文件消息接收者使用锁定机制 https://github.com/mulesoft/mule/blob/mule-3.x/transports/file/src/main/java/org/mule/transport/file/FileMessageReceiver.java#L210以防止轮询正在处理的文件,而请求者不 https://github.com/mulesoft/mule/blob/mule-3.x/transports/file/src/main/java/org/mule/transport/file/FileMessageRequester.java#L128.

有趣的是请求者源代码中的这条注释:

// Don't we need to try to obtain a file lock as we do with receiver

这种怀疑以及请求者缺乏锁的使用导致其行为与接收者不同。事实上,这个问题从未得到解决,这可能意味着在那里添加锁会产生不良的副作用。

无论如何,如果您坚持使用 Quartz,我建议您将正在处理的文件移至另一个目录,以防止重新轮询。文件端点应该能够为您进行移动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取通配符文件名的 Quartz 作业仅获取一个文件 的相关文章

随机推荐

  • PHP 包含最佳实践问题

    我一直在学习 PHP 语法并进行练习 我有 NET 背景 因此母版页总是让我在处理页眉和页脚时变得非常简单 到目前为止 我有一个 mainHeader php 和 mainFooter php 其中有我的头部菜单和页脚 html 我创建了一
  • Android 和 iOS 上的 Open Graph SMS 丰富消息

    我正在尝试利用带有开放图元标记的富文本消息 因此 我已将元标记包含在我的网站头部中 并且它通过了所有 Facebook 调试和 iOS API 验证工具 然而 当我通过短信将链接发送给 Android 或 iOS 上的人时 它通常不起作用
  • 获取 Facebook 页面帖子

    我编写了一些 JavaScript 来获取 Facebook 页面上的所有帖子 我这样做的 URL 是这样的 http graph facebook com cocacola feed limit 5 callback facebookRe
  • C# 嵌入vlc控件

    我尝试将 VLC 嵌入到我的 WPF 项目中 我已经注册了 axvlc dll 还下载了 VLC nightly build 版本 2 2 2 System Windows Markup XamlParseException 类型的第一次机
  • Netbeans 删除内置类?

    我有一个 NetBeans 项目 其中有很多类 过去三周我一直在研究这个项目 今天才开始遇到这个问题 单击 NetBeans 中的 运行主项目 按钮时 我看到以下错误 Exception in thread main java lang N
  • 在x86汇编中,为imul使用两个单独的寄存器是否更好?

    我想知道 主要是出于好奇 使用相同的寄存器进行操作是否比使用两个更好 考虑到性能和 或其他问题 什么会更好 mov rbx rcx imul rcx rcx or mov rbx rcx imul rbx rcx 任何有关如何对此进行基准测
  • 适用于 Windows 安装的 GitHub

    安装 GitHub for Windows 时 如何解决此错误 尝试下载时发生错误 http github windows s3 amazonaws com GitHub application http github windows s3
  • 以下是在 Python Mechanize 中按下提交按钮的结果

    所以我有一个经过身份验证的网站 我想通过 mechanize 模块访问该网站 我可以登录 然后转到我想要的页面 但是 由于该页面识别出 mechanize 未启用 javascript 因此它希望我单击提交按钮以重定向到网站的非 javas
  • 如何在 Mockito 中模拟 instanceof

    我有一段代码 我想用 Mockito 测试一下 mockedClass instanceof SampleInterface The mockedClass被嘲笑的抽象类 MockedClass 以及SampleInterface是一个接口
  • 消除 Javascript 中的按键延迟

    我有以下问题 我正在尝试编写一个 Javascript 游戏 并且角色由箭头键控制 问题是 当一个人按住按键时 在触发第一个按键之间有一个短暂的延迟keypress以及重复的keypress 另外 当按下 向右箭头键 并保持按下状态 然后按
  • 使用基于函数的视图更新视图

    如何将对象传递到模型表单中以在呈现页面时预填充字段 我想做一些类似于 Django UpdateView 基于类的视图中的构建 但使用基于函数的视图 只需从模型中获取对象并将该对象作为实例传递给表单即可 然后将表单传递给模板 像下面的例子一
  • 使用 Flexjson 将 JSON 列表反序列化为对象列表

    我正在尝试反序列化以下 json books id 1 name book 1 id 2 name book 2 进入列表 之前用这个 json 工作过 id 1 name book 1 id 2 name book 2 使用此代码 Lis
  • data.table 将 NA 替换为多列的均值和 id

    如果我有以下数据表 dat lt data table id c 1 1 1 1 2 2 2 2 var1 c NA 1 2 2 1 1 2 2 var2 c 4 4 4 4 5 5 NA 4 var3 c 4 4 4 NA 5 5 5 4
  • setTimeout 函数中未定义的 JavaScript 变量

    我有以下代码 for var i 0 i lt markers length i var lat markers i 0 var lng markers i 1 var img markers i 2 var info markers i
  • 重命名 Azure Active Directory

    目前 我有一个与我在 Azure 平台工作的公司的一组订阅关联的 Active Directory 但是 默认目录 AD 位于域上forenamesurnamehotmailco where forenamesurname是一名不再在这里工
  • jquery iframe跨域动态高度

    仅使用 jquery 且没有庞大的插件 这是否可能 我知道有很多插件和替代品 我正在寻找最短 最强大和最干净的 最好依赖jquery 这里有基本的 jsfiddle 来尝试你的想法 http jsfiddle net 3vPJd http
  • 有没有办法将这个 PHP 放入数组并简化它?

    以下代码加载在指定文件夹 单独定义 中找到的所有 php 文件 有没有办法将其放入数组中以简化代码 只有几个变量发生变化 但本质上代码会重复多次 The General Files the general opendir FRAMEWORK
  • 登录和会话 PHP

    我在检查会话时遇到一些问题 要访问页面 我需要激活会话 登录流程 Connect to mysql server require reservation connect php Function to sanitize values rec
  • 如何就地初始化数组?

    如何在不复制或移动构造临时元素的情况下初始化数组 当元素有明确的deleted 复制或移动构造函数 仅当元素具有默认构造函数或具有所有默认参数的构造函数时 我才能初始化数组 并且执行以下操作之一 a 明确声明数组 b 直接初始化和零初始化数
  • 读取通配符文件名的 Quartz 作业仅获取一个文件

    使用骡子 3 7 如果我的目录中有 5 个扩展名为 csv 的文件 则以下代码仅选取这五个文件之一 如果我删除石英触发器并将其设为普通文件 inbound endpoint 它将拾取所有五个文件 看起来很简单 但并没有按预期工作 Thank