【问题标题】:Multiple consumers for the same endpoint is not allowed不允许同一端点的多个消费者
【发布时间】:2017-09-26 15:30:40
【问题描述】:

我想从带有骆驼文件使用者的目录中读取文件,但我需要处理我的路线。所以我不能在溃败中使用线程。 是否可以编写多个路由以从同一端点(同一目录)读取,而 uris(例如排序类型)之间略有变化,并且像这样避免同一端点的多个消费者不允许异常?

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    是的,您可以这样做,请注意您现在将有相同文件的竞争消耗,因此请注意读锁。默认情况下,Camel 使用标记文件。

    您还可以使用不同的延迟,这样它们就不会以相同的间隔/时间轮询。并且您可以随机排序以减少处理相同文件的机会。

    【讨论】:

    • 假设一个文件现在被 route1 使用,并且上面有一个标记文件(假设我们使用 readLock=changed)。 route2 也能读取这个文件吗?如果不是 - 我在这里有什么竞争消费问题?
    • 阅读更多关于读锁的 Camel 文档。 changed 不会独占,因为两个消费者都可以检测文件何时不再更改并开始读取它,但是标记文件是独占的。或潜在的 fileLock,但这取决于您使用的 JDK 和文件系统,请阅读 JDK doc/javadoc 等相关内容。
    • 谢谢克劳斯。 markerFile 选项导致大文件出现问题,因为骆驼在文件完全写入之前开始读取文件。但我知道更改也是使用标记文件,不是吗?那么问题是什么?那么重命名选项呢?它不会解决这两个问题吗?
    • 问电脑
    • 为什么说:默认情况下骆驼使用标记文件?在camel.apache.org/file2.html 我看到默认是:readLock none
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 2019-07-08
    • 2011-06-04
    相关资源
    最近更新 更多