Rails从外部API保存外部事件ID以供后续调用

时间:2018-09-19 23:34:43

标签: ruby-on-rails

我已经在Ruby on Rails上开发了一段时间了,这是我第一次遇到这个问题。我们正在使用外部API,以允许用户向他们开设帐户。他们有一个API端点供我们使用和检查帐户状态,并且它只能发送回给我们1000个事件。为了避免该限制,我们必须发送过去处理的事件ID,以便它们仅在该事件之后发送回事件。

例如,我们刚刚处理了ID为10,000的事件。将其作为参数发送到其API端点将返回ID为10,001 or greater的事件。

跟踪此ID的最佳方法是什么?我能想到的唯一方法是创建一个带有列external_id的模型,并在处理完所有内容后继续更新该记录。对我来说,这似乎不是解决此问题的最佳方法,因为我正在创建一个只有1条记录的新模型,这似乎很奇怪。

我正在调用他们的API并在rake任务中对其进行处理,该任务每隔1分钟运行一次cronjob(使用whenever gem)。

我并不是说要主观,我只是想知道在我继续执行之前,是否有比我现在能想到的更好的方法来处理这种情况。感谢您的任何建议!

编辑:这是他们的回应:

[  
     {  
        "id":1087105,
        "dateTime":"2017-01-03T15:38:58.003Z",
        "payload":"{  
            \"status\":\"PENDING\",
            \"requestId\":\"4ab7f930-cf9f-49c2-9814-3bcc2f29e652\"
        }"
     },
     {  
        "id":1087106,
        "dateTime":"2017-01-03T15:38:58.253Z",
        "payload":"{  
            \"status\":\"INVESTIGATION_SUBMITTED\",
            \"requestId\":\"4ab7f930-cf9f-49c2-9814-3bcc2f29e652\"
        }"
    }
]

我需要保存的字段是该响应中的最后一个"id",在这种情况下为1087106

1 个答案:

答案 0 :(得分:1)

对于像Redis这样的简单键值存储来说,声音听起来很棒。特别是它的计数功能INCRBY。本文http://oldblog.antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html介绍了您要使用Redis的各种方案。 Counting stuff上的部分符合您的问题定义。