在clojure中是否有惯用的处理状态?

时间:2017-03-19 05:25:29

标签: clojure global state

我正在编写几个端点管理调度程序,为此我使用quartzite

我希望调度程序实例可以在调度,重新安排和取消调度函数中看到,最简单的方法是创建一个原子,但我想这不是防止代码嗅到的最佳方法。

我想知道是否有一种惯用的方法来处理clojure中的状态?

2 个答案:

答案 0 :(得分:3)

一种常见的方法是使用像ComponentIntegrant这样的库来管理状态的生命周期和依赖注入。

在这些情况下,你倾向于最终得到一个包含相互关联状态系统的单个原子。

根据我的个人经验,我使用Quartzite和Component - 我有一个可用于启动/停止/安排等的调度程序组件。

这些天我更喜欢Integrant,并且会慢慢从Component中移动我的项目。

答案 1 :(得分:0)

我相信,在你的代码中有一个原子是可以的,但是尽可能少地存储数据,只有那些真正需要更改的数据。

你无法避免完全处于状态,原子对此很有用。