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