【发布时间】:2026-01-18 02:30:02
【问题描述】:
我正在使用 haskell 构建一个队列多路复用器,部分是作为一种学习方式,部分是作为一些狡猾的 shell 脚本的替代品。
它的作用是定期连接到每个队列(我们使用的是 rabbitmq)来测量队列深度。如果主系统当前正在从一个队列消费并且该队列有消息,我们什么也不做。如果连接的队列是空的,我们切换到上面有最多消息的队列。如果所有队列都是空的,我们什么也不做。到目前为止一切顺利。
我还需要一个基于时间的切换,这样如果主应用已经连接到一个队列超过 1 小时并且队列是空的,那么即使所有其他队列都是空的,也要切换。
我在想我想要一些周期性地发出事件来触发下一个行为周期的东西,比如每分钟的“检查”事件和每小时的“时间切换”事件。
有没有一种惯用的方法在 haskell 中对基于时间的事件进行建模?
【问题讨论】:
-
你想建模时间事件,还是你想要时间事件?
-
听起来你可能更喜欢 Erlang 来完成这项任务......
-
Push-Pull FRP 描述了
Event和Behaviour的有效实现(以及每个的形式语义)。