netty NIOを使用してTCP接続を確立するシナリオがありますが、サーバーがダウンしたときに、 可用性リスナーをサーバーに接続する方法はありますか?Nettyで切断された後に自動的にTCPサーバーに接続する方法
1
A
答えて
2
は、すぐに再接続または再接続タスクのスケジューリングを試みることによってchannelInactive
で反応するクライアントパイプラインの最初のものとして持つことができます。 Exponential Backoff library例はこちら
public class ReconnectionTask extends Runnable, ChannelFutureListener {
Channel previous;
public ReconnectionTask(Channel c) {
this.previous = c;
}
@Override
public void run() {
Bootstrap b = createBootstrap();
b.remoteAddress(previous.remoteAddress())
.connect()
.addListener(this);
}
@Override
public void operationComplete(ChannelFuture future) throws Exception {
if (!future.isSuccess()) {
// Will try to connect again in 100 ms.
// Here you should probably use exponential backoff or some sort of randomization to define the retry period.
previous.eventLoop()
.schedule(this, 100, MILLISECONDS);
return;
}
// Do something else when success if needed.
}
}
チェック:例えば
、
public class DisconnectionHandler extends ChannelInboundHandlerAdapter {
@Override
public void channelInactive(final ChannelHandlerContext ctx) throws Exception {
Channel channel = ctx.channel();
/* If shutdown is on going, ignore */
if (channel.eventLoop().isShuttingDown()) return;
ReconnectionTask reconnect = new ReconnectionTask(channel);
reconnect.run();
}
}
ReconnectionTask
+0
ありがとう、それは理にかなっています。 – Kaku
+0
それはわかりません。私はChannelPool(http://netty.io/4.0/api/index.html?io/netty/channel/pool/package-summary.html)実装の中で何かを考えていますが、場合。 –
関連する問題
- 1. サーバーが切断されたときに強制的にTCP接続を切断する
- 2. .NET TCPサーバー接続の切断
- 3. ハードウェア切断後のTCPリカバリ接続
- 4. ファイルをダウンロードした後にFTPサーバー接続を切断する方法は?
- 5. マルチスレッド - TCP接続の切断
- 6. DCOM:クライアントクラッシュ時にサーバーで接続を切断する方法は?
- 7. webRTC appRTC、約2分後に呼び出し間で自動的に接続が切断される(ISBXデモ)
- 8. Netty wssソケットクライアント接続が切断されます
- 9. TCP接続の切断を検出する方法は?
- 10. Android BluetoothSocketはすぐに接続後に切断されます
- 11. Gremlinサーバーwithリモート接続 - 自動的に再接続する方法?
- 12. コアのBluetoothで切断した後にデバイスに再接続する方法
- 13. elastic4s接続が切断されたときの自動再接続
- 14. スイッチング後にマルチペラ接続セッションが切断されました
- 15. TCPホストに自動的に再接続する
- 16. 接続が切断された後にDBが再接続しない
- 17. NowJS接続が切断された後に手動で新しい接続を開始する
- 18. Perl IO ::ソケット:: INET + IO ::非同期::ストリーム切断時にTCPサーバーに再接続
- 19. Netty Channel.close()が断続的にハングする
- 20. 接続の中断後にOracle接続プールを自動再接続する方法はありますか。
- 21. 余分なディスプレイに接続した後、macvimを起動できず、接続が切断されました。
- 22. WebSocket接続が数秒後に切断されます
- 23. RabbitMQサーバーの接続が600秒後に自動的に失われる
- 24. AS3でソケットが自動的に切断される
- 25. Wampサーバーに接続されたC++プロセスの自動再起動
- 26. Anylogicの動的な接続と切断
- 27. BLE頻繁に切断され、範囲内で自動的に接続しない
- 28. C#クライアント/サーバソケットが切断された後に再び接続されない
- 29. 接続されたデータグラムソケットを切断して再接続する
興味深い質問ですが、可用性を得るためにサーバーにpingを実行することは可能でしょうか – HCarrasko
しかし、その場合は、サーバーの可用性をチェックするのに忙しいスレッドを1つ保持する必要があります。 – Kaku
ハンドラでChannelInactiveメソッドを使用してみてください – Ferrybig