Azure Logic Apps获取请求缓存结果

时间:2018-11-06 16:29:28

标签: azure-logic-apps

我创建了一个Logic App HTTP GET请求,该请求从天气API中检索数据。

我想实现的是仅对相同的请求使用缓存的结果来减少对天气API的调用。

示例:在我公司中,有300台设备正在查询中以相同的纬度和经度调用Logic Apps端点。在这一点上,我假设,对于Logic App的每个调用,都会在weather API上进行调用。相反,我希望它第一次调用weather API,然后对于所有相同的调用,它返回缓存的结果。

恐怕,如果我在请求的标头中使用缓存控制设置,则Logic App在查询不同(例如不同的位置)的情况下也会返回相同的缓存结果。

谢谢。

1 个答案:

答案 0 :(得分:1)

如@Thomas在上面的评论中所述,API管理服务比诸如逻辑应用程序之类的应用程序服务的其他服务昂贵。

但是,根据我的经验,我认为使用少量代码来实现缓存逻辑可以花更少的钱。例如,使用Azure表存储来存储这些缓存天气数据既便宜又便宜。您可以通过表分区键和行键从Azure表中获取它们作为日期时间,纬度和经度的查询参数。

这是用于缓存逻辑的简单伪代码。

string partitionKey = "<datetime>"
string rowKey = "<latitude>-<longitude>"
data = fetchWeatherDataFromTable(partitionKey, rowKey)
if data == null {
    data = getWeatherDataFromRemoteAPI()
    storeWeatherDataIntoTable(partitionKey, rowKey, data)
}
return data

此外,您可以使用其他存储(例如Azure SQL数据库或Redis)代替Azure表存储。由你决定。

希望有帮助。