标签: clojure global state
我正在编写几个端点管理调度程序,为此我使用quartzite。
我希望调度程序实例可以在调度,重新安排和取消调度函数中看到,最简单的方法是创建一个原子,但我想这不是防止代码嗅到的最佳方法。
我想知道是否有一种惯用的方法来处理clojure中的状态?
答案 0 :(得分:3)
一种常见的方法是使用像Component或Integrant这样的库来管理状态的生命周期和依赖注入。
在这些情况下,你倾向于最终得到一个包含相互关联状态系统的单个原子。
根据我的个人经验,我使用Quartzite和Component - 我有一个可用于启动/停止/安排等的调度程序组件。
这些天我更喜欢Integrant,并且会慢慢从Component中移动我的项目。
答案 1 :(得分:0)
我相信,在你的代码中有一个原子是可以的,但是尽可能少地存储数据,只有那些真正需要更改的数据。
你无法避免完全处于状态,原子对此很有用。