我是Apache Camel的新手,我计划在Grails应用程序中实施文件轮询器,以将其部署在两个节点的Jboss集群中。
我打算使用Grails路由插件来包含Camel。
问题是,由于它是一个集群环境,我们将有两个正确的Camel Context
(每个节点一个)?如果是这样,那么两者将具有相同的路线。当源文件夹中存在文件时,两个 Camel 上下文都将尝试处理该文件吗?我不希望两个节点都尝试处理文件并导致失败的情况。我只希望仅通过一个 Camel 上下文和路由来处理文件。我是否需要做任何特殊的事情来处理这种情况,否则 Camel 有能力在集群中工作?
最佳答案
您可以将 Camel 上下文作为jboss集群单例运行。
======================================
抱歉,正在手机上回应。这是更多信息。
这并不是说您不能在集群中的每个节点上都运行 Camel 上下文(可以),但是如果所有节点都在观察相同的文件系统,并且您不希望它们为谁来处理放置在目标中的文件而争论不休目录,最好的选择是一次只运行一个上下文实例。
由于您已经在运行jboss集群[我假设],所以HA Singleton模型似乎非常适合您。它将仅在一个实例上运行 Camel 上下文,但是如果该实例失败,则另一个节点将启动该上下文,因此您总是有机会始终运行上下文。
无论如何要看的东西。或者,您可以为集群中的每个节点指定不同的文件掩码,因此每个上下文将仅拾取与指定文件掩码匹配的文件。
关于grails - Jboss集群中的Apache Camel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13221743/