私のAPIでリクエストを受け取ったとき、私は一連のステップを実行したい、それぞれのステップは豊富である。各ステップは成功するか失敗するかのいずれかです。成功すると、次のステップを実行する必要があります。失敗すると、終了ステップが実行され、フローが完了します。そのために、私はSpring State Machineをこの法案に合うように思っています。スプリングステートマシン - 作成する必要がありますか?
私は、ドキュメントをよく読んで、それで遊んが、いくつかのものは私を逃れるいます
が要求とステートマシンの間で1対1の関係がなければならないことを意味し、リクエストごとに新しいState Machineインスタンスを作成しますか?あるいは、私はどういうわけか、次の要求のためにマシンをリセットして、完成したステートマシンを再利用すべきですか?
完成したステートマシンのクリーンアップはどうですか?ステートマシンのインスタンスを破棄してクリーンアップする方法はありません。要求ごとに1を作成すると、フレームワークが何らかの形でリソースを処理しない限り、効果的にメモリリークが発生しました。
私はSpringの実装に精通していませんが、ドキュメンテーションを見ると、各マシンの状態が内部的に表現されていることがわかります(状態はマシンの外部に格納されています; ala 'State currentState = machine.start () ')。これにより、複数の要求にわたって単一のマシンを使用することができなくなります。これは、最初の要求が完了する前に2回目の要求が発生する可能性があります。それで、 –
状態マシンが必要ですか?前提条件が満たされていることだけを確認している場合。単純な 'if(!firstSuccess)returnが失敗します。 if(!secondSuccess)return failure; '十分ではない? –
私はこの流れをサポートするいくつかのデザインがあると思います。それらのうちの1つはSSMです。それを試してみるために、私はそれを選びました。 私は、リクエストとステートマシンインスタンスの間に1対1が必要であることに同意します。しかし、それは資源管理の問題を残す。インスタンスをリサイクルする必要がありますか?またはそれらを捨てるべきか?もしそうなら、どうですか? –