私は本当に基本的なクライアント<->サーバープロジェクトで遊んでいて、メインサーバーに到達できない場合はフォールバックシステムを実装するのがいいと思いました。私はこれをSRVレコードルックアップで行うことを計画していました。
価値があるのは、これが私がSRVレコードを取得する方法です。
String query = "_test._tcp.my.domain.com";
Hashtable<String, String> environment = new Hashtable<String, String>();
environment.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
environment.put("java.naming.provider.url", "dns:");
InitialDirContext dirContext = new InitialDirContext(environment);
Attributes records = dirContext.getAttributes(query, new String[] {"SRV"});
だから私はいくつかのSRVレコードを設定しました、そしてそのすべて、コードはそれらをうまく検索します。私が知らないのは、レコードを適切に並べ替えたリストを作成した後、使用するレコードをどのように見つけることができるかということです。
優先度の最も低いレコードのホスト/ポートに接続するだけで、失敗した場合は次のレコードに移動できます。しかし、適切な量のレコードがあり、優先度の最も高いレコードの1つだけが機能した場合はどうでしょうか。クライアントを使用していた人は誰でも、優先度の低いレコード接続のそれぞれがタイムアウトするのを待ってから、最終的に機能するものを見つける必要があります。
私が探しているのは、ユーザーがおそらく年齢を待つ必要がないという点で、ホスト/ポートが機能しているレコードをシームレスに見つけることです。