使用Scala对外部服务的Throttle API调用

时间:2018-11-07 17:35:04

标签: scala playframework akka-stream

我有一个公开REST端点的服务,该端点经过几次转换后也通过其REST端点调用了第三方服务。

我想对我的服务实施某种限制,以避免受到该第三方服务的限制。请注意,我的服务端点仅接受一个请求,而不接受它们的列表。我正在使用Play,我们也有Akka Streams作为依赖项。

我的第一步是让我的服务将请求保存到数据库表中,然后使用Akka流Source,利用throttle函数,选择任务,应用转换,然后调用外部服务。

这是重新确定的方法还是有严重的缺点?

谢谢!

1 个答案:

答案 0 :(得分:0)

为什么将请求保存到数据库?队列是否需要重新启动后才能生存和/或是否运行需要以某种方式同步请求的负载平衡设置?

如果您不需要上面的内容,我认为仅使用Source.queue来存储任务数据就可以了吗?

也许您已经想到了这一点:如果要使端点更具弹性,则应允许您的API发送“抱歉,忙碌”的响应并丢弃请求,而不是在队列超过特定大小时将其排队