【问题标题】:Using State Machine to implement a Poller system使用状态机实现轮询系统
【发布时间】:2018-12-18 15:59:20
【问题描述】:

我正在尝试构建一个 http poller system 它应该执行以下操作:

对于每个用户,尝试与服务器建立连接,如果失败,请检查失败原因,可能该服务器不可用,所以尝试另一个,如果原因是错误的凭据,请执行其他操作.. 一旦我们为该用户建立连接,我们就会开始轮询服务器以获取有关该用户的一些信息

我在想state machine,其中每个用户都有一个状态机实例(存储在映射 userId -> statemachine 中)并且我有一些计划任务,每 1 秒获取所有用户的数据让比如说,它过滤当前状态连接的状态机..

这是个好主意吗?对这样的问题使用状态机有意义吗?

【问题讨论】:

  • 就我个人而言,我通过链接在这个状态机实现上工作过。

标签: java spring architecture backend


【解决方案1】:

我认为使用状态机来实现它是个好主意。状态机具有三种状态,INITIAL、NEXT_STEP 和 FINAL,每个状态都有一个 doSomething() 方法的实现。它接受一个参数,根据参数它可以跳转到下一个状态。如果您想自定义状态机,请通过linkedin检查此开源实现以实现有效用例的状态机。你可以在这里查看设计 LinkedIn URL Shortner 使用 Java 枚举对状态机建模。 对于计划任务,您可以使用

CompletableFuture

在此处查找更多详细信息。 Completeable Future

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    相关资源
    最近更新 更多