Kafka Streams で StreamThread が死んだことを検知する
何らかの予期せぬ原因で StreamThread が死んだとき、StreamThread が死ぬので処理は止まってしまうものの、プロセスはそのまま生きている、みたいなことになるのを避けたい。素の状態で使っていても標準エラー出力には例外の内容が出るので、それを見て対応する運用なら問題ないのだが、自前で構築しているログ周りの仕組みに寄せたい場合には、自分で例外を捕捉して好きなようにするのがよい。
KafkaStreams#setUncaughtExceptionHandler
を使うことで、StreamThread に対して UncaughtExceptionHandler
を登録できる。
仕事のプロジェクトだと、ここでログを出しておいて、それが中央のサーバに集約されて最終的に Slack でアラートが飛んでくる、みたいな形になっている。便利。