使用jdbc端点实现驼峰负载平衡

使用jdbc端点实现驼峰负载平衡,jdbc,apache-camel,Jdbc,Apache Camel,有人能解释一下如何在jdbc端点上使用驼峰负载平衡吗? 如果我的第一个db关闭,它需要自动选择第二个db 我的路线生成器: from("direct:jdbcisuserexists").setBody(simple("${body}")) .loadBalance() .failover() .to("jdbc:dataSource?resetAutoCommit=false&outputType=

有人能解释一下如何在jdbc端点上使用驼峰负载平衡吗? 如果我的第一个db关闭,它需要自动选择第二个db

我的路线生成器:

        from("direct:jdbcisuserexists").setBody(simple("${body}"))
            .loadBalance()
            .failover()
            .to("jdbc:dataSource?resetAutoCommit=false&outputType=SelectList","jdbc:dataSource1?resetAutoCommit=false&outputType=SelectList");
请尝试以下操作:

from("direct:jdbcisuserexists")
    .setBody(simple("${body}"))
    .loadBalance().failover()
        .to("jdbc:dataSource?resetAutoCommit=false&outputType=SelectList")
        .to("jdbc:dataSource1?resetAutoCommit=false&outputType=SelectList")
    .end();
这应该行得通,尽管感觉有点过于宽泛。
failover()。您可以将此范围缩小到特定的异常,例如通过故障转移(SQLException.class)
,但不能保证此异常是由数据库中断引起的(它可能是SQL语法中的某个内容)


一个更好的选择(如@Namphibian所暗示的)是有两条路由,每个路由调用自己的JDBC端点。每个路由都可以选择性地检查SQLException是否确实是由中断引起的(例如,通过检查错误消息以查找特定于DB的故障代码)。若要在出现故障时返回到第二个数据库,可以使用动态路由器()。

不要在骆驼上执行此操作。应为数据库配置热故障转移/高可用性,即在MSSQL上,它们可能位于镜像集中。您指向一个地址,这是透明处理的。从将您的体系结构纳入HA解决方案开始,然后转到其他细节。@Namphibian感谢您的评论。但是我们使用的是nosql(Cassandra数据库),其中负载平衡是不可取的。所以我们在骆驼上尝试。我的建议是创建两条路线。如果第一个失败,将消息发送到第二个,然后在那里处理。我会看看是否能在周围贴上答案。@Namphibian再次感谢。您建议的要点是不要对camel jdbc端点使用loadbalance,对吗?好啊我们将尝试两种不同的路线,并返回结果。如果你能把你找到的答案贴出来,我将不胜感激。提前谢谢!!