不允许同一端点的多个消费者
问题描述:
我想从骆驼文件消费者的目录中读取文件,但我需要处理我的路线。所以我不能使用线程内的线程。 可以写多条路由从同一个端点(同一个目录)读取uris之间的小改动(例如排序类型),并且像这样避免多个使用者对于同一个端点是不允许异常的?不允许同一端点的多个消费者
答
是的,你确定你可以做到这一点,请注意,现在你将会争用相同的文件,因此请关注读锁。默认情况下,骆驼使用标记文件。
您也可以使用不同的延迟,因此它们不会以相同的间隔/时间轮询。而且您可以随意排序以减少处理相同文件的机会。
假设一个文件正在被route1消耗,并且有一个标记文件(假设我们正在使用readLock = changed)。 route2是否也能读取这个文件?如果不是 - 我在这里有什么竞争消费问题? – user7916020
在Camel文档中阅读关于读锁的更多信息。更改将无法独家使用,因为这两个消费者都可以检测文件何时不再更改并开始阅读,但标记文件是独占的。或潜在的fileLock,但这取决于您正在使用的JDK和文件系统,请阅读JDK doc/javadoc等。 –
谢谢Claus。 markerFile选项导致大文件的问题,因为骆驼开始在文件完全写入之前读取文件。但是我知道改变的也是使用标记文件,不是吗?那么问题是什么?那么重命名选项呢?它不会解决这两个问题吗? – user7916020