私は本番環境で Lagom アプリケーションのセットアップに取り組んでいます。ConductR ライセンスについて Lightbend に問い合わせてみましたが、何年も連絡がありません。だから、今私は別のアプローチを探しています。複数の質問があります。
現在、アプリケーションの規模は非常に小さいため、静的サービス ロケーターを使用することが今のところうまくいくと思います (他の代替手段も利用できます)。また、Cassandra のデフォルト設定ではなく、MySQL をイベント ストアとして使用しています (理由はこのスレッドには関係ありません)。
Cassandra と Lagom の Service Locator を抑制するために、build.sbt に次の行を追加しました。
lagomCassandraEnabled in ThisBuild := false
また、service1-impl モジュールを使用して、次の部分を application.conf に追加しました。
lagom.services {
service1 = "http://0.0.0.0:8080"
}
開発環境でsbt runAll
は、tmux セッションを使用してアプリケーションを正常に実行できました。この構成では、デフォルトの 8000 ポートで実行されているサービス ロケーターはありませんが、8080 ポートで service1 を個別にヒットできます。(これが予想される動作であるかどうかは不明です。コメント?)
実行sbt dist
してzipファイルを作成し、それを解凍して実行可能ファイルを実行しました。興味深いことに、zip は service1-impl フォルダー内に作成されています。では、複数のモジュール (サービス?) がある場合、sbt dist はサービスごとに個別の zip ファイルを作成するのでしょうか?
で作成した実行可能ファイルを実行するsbt dist
と、Cassandra への接続が試行され、サービス ロケーターも起動され、追加した静的サービス ロケーター構成が無視されます。基本的に、build.sbt に追加した行を無視しているように見えます。これを説明できる人はいますか?
最後に、クラスター内に service1 と service2 の 2 つのサービスと 2 つのノードがあり、ノード 1 が service1 を実行し、ノード 2 が両方のサービスを実行している場合、静的サービス ロケーターは application.conf でどのように表示されますか。サービスには独自のapplication.confがありますが、すべてのapplication.confで静的サービスロケーターと同じ構成をコピーする必要がありますか?
こんな感じでしょうか。
lagom.services {
service1 = "http://0.0.0.0:8080"
service1 = "http://1.2.3.4:8080"
service2 = "http://1.2.3.4:8081"
}
特定の各アクターがいずれかのノードで生成されるため、このサービス ロケーター構成でどのように機能しますか?
また、本番環境の tmux セッションでこれを実行したくありません。最終的にこのコードを本番環境で実行するための最良の方法は何ですか?