有了TCP FailOverConnectionFactory,有没有办法做自定义的健康检查,并在故障时回落到故障转移?

我有一个Tcp FailOverConnectionFactory,提供了两个AbstarctClientConnectionFactory。每个AbstarctClientConnectionFactory将连接到不同的服务器。

并使用TcpOutboundGateway进行消息交换。现在,我想在AbstarctClientConnectionFactory之间切换基于服务器支持的自定义健康检查。

例如:如果客户端发送消息 如果客户端发送消息 ‘测试健康 ‘,然后服务器回复为’。‘或’失败‘. 如果收到的回复是FAIL,那么其他AbstarctClientConnectionFactory必须用于即将到来的连接。

请建议是否可以通过Spring Integration Ip框架来实现。

解决方案:

逻辑基本上是这样的。

/**
     * Finds a connection from the underlying list of factories. If necessary,
     * each factory is tried; including the current one if we wrap around.
     * This allows for the condition where the current connection is closed,
     * the current factory can serve up a new connection, but all other
     * factories are down.
     * @throws InterruptedException if interrupted.
     */
    private synchronized void findAConnection() throws InterruptedException {
        ...
        while (!success) {
            try {
                this.delegate = nextFactory.getConnection();
            ...
            }
            catch (RuntimeException e) {
                if (logger.isDebugEnabled()) {
                    logger.debug(nextFactory + " failed with "
                            + e.toString()
                            + ", trying another");
                }
                ...
            }
        }
    }

所以,你可能可以覆盖一个 AbstractClientConnectionFactory.getConnection() 的自定义检查,如果服务器返回了 FAIL.

本文来自投稿,不代表运维实战侠立场,如若转载,请注明出处:https://www.shizhanxia.com/727.html

(0)
上一篇 2022年6月29日 下午3:59
下一篇 2022年6月29日 下午3:59

相关推荐

发表评论

登录后才能评论