またKafka Lagを見ます


「KafkaのLag計算の誤りと正確な実現」では、kafka.admin.consumer GroupCommand.ParttitititionAsignment Stateが外部からアクセスできないことについて言及していますので、ParttitionAsignment State前のプロテクト修整符を削除します。
describeGroupから直接に返した結果をJSONに変換してモニタページに送ることができます。コードは以下の通りです
String[] agrs = {"--describe", "--bootstrap-server", brokers, "--group", groupId};
ConsumerGroupCommand.ConsumerGroupCommandOptions options =
        new ConsumerGroupCommand.ConsumerGroupCommandOptions(agrs);
ConsumerGroupCommand.KafkaConsumerGroupService kafkaConsumerGroupService =
        new ConsumerGroupCommand.KafkaConsumerGroupService(options);
ObjectMapper mapper = new ObjectMapper();
//1.   jackson-module-scala_2.12
mapper.registerModule(new DefaultScalaModule());
//2.                
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
//3.  Scala      JSON   
String source = mapper.writeValueAsString(kafkaConsumerGroupService.describeGroup()._2.get());
ここで必要なのはJackson-module-scalaのカバンを採用して実現します。直接に普通のJSONのプログレッシブ方式を使うと、希望の効果が得られなくなります。jacksonとjackson-module-scalaの対応するMavenライブラリは以下の通りです。

    com.fasterxml.jackson.core
    jackson-core
    2.9.4


    com.fasterxml.jackson.module
    jackson-module-scala_2.12
    2.9.5
注意ローカルにインストールされているScalバージョンと、設定されているJackson-module-scalaバージョンが一致しないと、いくつかの異常が報告されます。発散して考えると、JSONに順番に並べられることができる以上、JSONを経由して完全に逆序列化会の対象とすることができますが、JSONを介して中間媒体として、アクセス制限されたScalオブジェクトをJavaオブジェクトに変換して、上の残りのコードは以下の通りです。
//4.  JSON        Java  
List target = mapper.readValue(source,
        getCollectionType(mapper,List.class,PartitionAssignmentState.class));
//5.   
target.sort((o1, o2) -> o1.getPartition() - o2.getPartition());
//6.   
printPasList(target);
このように、前のいくつかの記事で消費者の詳細機能を取得するのと同じ効果が得られます。ここには二つの注意点があります。
  • ParttitionAsignmentantateのcoordinatorはNodeタイプで、このタイプはカスタムが必要で、Kafka原生の会報は間違っています。
  • アンチプログレッシブ時にNodeはemptyの属性が識別されません。ソリューション参照コードのステップ2.
  • コードの詳細はコードを参照してください。
    JSONのプログレッシブ化とアンチプログレッシブ操作によって、本来はできないことが実現され、思考がもう少し発散されても、ByteBufferによって変換されるなど、プログレッシブ化されてもいいです。プログラミングロジックは複雑になります。
    上記の説明は、ScalaとJavaの間の相互操作が容易ではないと思われるかもしれませんが、そうではなく、上記の説明は消費者の詳細を補足するための別の方法にすぎません。ScaraとJavaの間の相互操作は比較的簡単で、通常は直接に相手のクラスを使用することができます。集合については、Scalaにはまた、ScalaとJavaの集合のためのscala.co llection.JavaCoverters(scala 2.8.1から導入)があり、これと同じscala.co llection.JavaConversionsは、@Deprecatedと表記されている。scalaコードに集合変換が必要であれば、まずscala.co llection.Java Coverters.uを導入する。さらに、ASJavaまたはasScalメソッドを呼び出して、モデルチェンジを完了することを表示します。ScalaとJava集合の相互回転についての紹介は次の文章の中に現れます。
    この文章の重点はあなたが収穫と成長があるかどうかで、その他のはすべて重要ではありませんて、読者達がこの点をしっかり覚えていることができることを望みます。同時に、私は長年のコレクションを経て、現在も一連の完全な学習資料を収集しました。分散型アーキテクチャ、高拡張性、高機能、高合併性、Jvm性能の調整、Spring、MyBatis、Ngixソース分析、Redis、ActiveMQ、Mycat、Netty、Kafka、Mysql、Zoombeeper、TockboNginnxなど多くの知識点で高級品を仕入れて、構築師になりたい友達に参考と助けを求めています。
    もっと詳細な思考ガイド図と以下の資料が必要な場合は、技術交流グループを追加してもいいです。「708 701 457」は無料で入手できます。