Java 接口调用速度限制一般是怎么实现的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 接口调用速度限制一般是怎么实现的?相关的知识,希望对你有一定的参考价值。

业务场景如下,有一个第三方的API接口,我的Java程序中是多线程调用的,而且调用速度很快,我想控制这个API的调用次数,在每秒30次的样子,我现在用的方法是通过获取当前系统时间,精确到秒做为Map的Key,Value就存这一秒的流速,每调用一次加1,有没有哪位大虾知道跟好的方法?或者更高效的方法!

参考技术A 1秒30次也是太快了,这个要看接口的更新速度
而且你根本没必要多线程调用,因为多个线程同时调用,接口的数据还是那些,根本就不会变
你应该一个线程定时调用,把结果放入公共变量里,然后其它线程 都从这个公用的变量获取数据追问

这个必须要多线程,而且频率要非常快的,所以才会要限制调用次数的,而且每调用一次的结果是不一样的!

追答

第三方接口基本上不需要调用的速度太快,你没有说出你想要什么东西,只是说你有多个线程调用第三方接口,也没说出第三方接口提供了什么,所以你现在的逻辑未必是正确的

追问

我们的这个是发短信的,所以说每调用一次都是发送一条短信,肯定不能存公共变量的,所以需要限制频次!而且为了达到快速发出,必须使用多线程!

追答

类似于网站那种发短信确认的吗,那就没有必要多线程,你说的是你测试吧,多个线程不停的循环发,实际上是不需要多线程的

本回答被提问者和网友采纳
参考技术B 你这个专业术语叫做频次限制。我之前做的是做了个接口能查询出来最近某个接口10分钟内调用的次数并把这个次数放在了mc里面,次数大概1分钟更新一次,做不到实时更新。追问

我这个就是需要实时控制的,因为这个接口要开放给N多人,要针对每个人进行限制调用频次!

追答

我的也是啊,但我们要求这个实时性并不是特别高,1分钟内就行

我用java怎么去实现支付宝接口,没有思路,求大神帮忙,谢谢,

http://open.alipay.com/platform/document.htm#down
在下面找java demo

一般都是配置几个信息
按照支付方式不同 (担保交易啥的 我忘了 3个好像)
有不不同的传参,看看就行
代码里可以用httpClient做get、post请求
参考技术A 看文档啊,支付宝肯定有接口的说明啊 参考技术B 你想做黑客追问

你个逗比,

以上是关于Java 接口调用速度限制一般是怎么实现的?的主要内容,如果未能解决你的问题,请参考以下文章

WebApi中,怎么获取接口调用者的外网ip地址

WebApi中,怎么获取接口调用者的外网ip地址

java如何实现限制一个接口每天被调用次数为5次?

html5调用json数据接口怎么写

我用java怎么去实现支付宝接口,没有思路,求大神帮忙,谢谢,

接口超时