如何大量请求发送短信接口? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Jekins
V2EX    Java

如何大量请求发送短信接口?

  •  
  •   Jekins 2022-03-10 10:38:33 +08:00 4417 次点击
    这是一个创建于 1314 天前的主题,其中的信息可能已经有所发展或是发生改变。

    客户提供的短信接口没有批量发送短信的接口..目前是在循环里去直接 http 请求(根据返回状态判断短信是否发送成功).这样做肯定不行的.目前项目还未上线..所以还没有想到一个比较好的解决办法...使用 CompletableFuture 虽然不会阻塞...但是对面的 api 肯定会防止刷 api 限流...有老哥解决过类似需求吗?

    27 条回复    2022-03-26 11:16:13 +08:00
    9c04C5dO01Sw5DNL
        1
    9c04C5dO01Sw5DNL  
       2022-03-10 10:46:27 +08:00
    这个。。。既要大量请求,又要防限流。。。。矛盾了。还是问问对面吧。

    另外 CompletableFuture 提供的只是异步接口,但是 io 会不会阻塞主要看用的是 bio 还是 nio 还是 aio
    mjVtb96d2bap2u3Z
        2
    mjVtb96d2bap2u3Z  
       2022-03-10 10:46:59 +08:00
    换接口?
    Jekins
        3
    Jekins  
    OP
       2022-03-10 10:49:25 +08:00
    @giiiiiithub 我开发经验不足.谢谢老哥回复解答.
    Jekins
        4
    Jekins  
    OP
       2022-03-10 10:50:02 +08:00
    @ali727 额..我也想.客户提供的,没法改...
    RedBeanIce
        5
    RedBeanIce  
       2022-03-10 10:52:44 +08:00
    他们设计的接口有问题啊。

    根据现在的情况,你只能开启多线程去调用然后 get 阻塞???这样子好难
    应该他们回调你们接口,会好一点,,,这样子阻塞太难了,,建议他们改接口,他们的错误,我们不背锅
    Jekins
        6
    Jekins  
    OP
       2022-03-10 10:54:21 +08:00
    @RedBeanIce 感谢老哥回复. 我以为会有排队请求 api 这种方案的...
    chawuchiren
        7
    chawuchiren  
       2022-03-10 11:03:52 +08:00
    延迟队列?
    zzfer
        8
    zzfer  
       2022-03-10 11:11:54 +08:00
    排队请求不久是队列吗
    Xusually
        9
    Xusually  
       2022-03-10 11:20:44 +08:00 via iPhone
    不行就自己维护队列呗
    IvanLi127
        10
    IvanLi127  
       2022-03-10 11:23:41 +08:00
    问清楚对面这个功能是不是要循环调用这个接口。是的话就这样调咯,有限流就卡着限制做呗,慢慢循环完就是了。他们不急你急啥,是吧
    aofall
        11
    aofall  
       2022-03-10 11:26:54 +08:00
    引入队列中间件 rocketmq 之类的?
    Kyle18Tang
        12
    Kyle18Tang  
       2022-03-10 11:30:19 +08:00
    DelayQueue?
    murmur
        13
    murmur  
       2022-03-10 11:31:28 +08:00
    你们的接口太辣鸡,就现在发广告的速度,大规模短信接口不是问题,经费没到位
    ytmsdy
        14
    ytmsdy  
       2022-03-10 14:45:50 +08:00
    先把请求接收进来,然后数据丢到 redis 里面慢慢处理。丢进去之前先看看 10 分钟以内有没有发送过,如果有就直接丢错给前端,如果没有,那就进队列慢慢排队。
    coderJie
        15
    coderJie  
       2022-03-10 14:50:38 +08:00
    用队列排队发送请求啊
    dorothyREN
        16
    dorothyREN  
       2022-03-10 14:56:29 +08:00
    我有批量的接口,但是只能相同内容
    westoy
        17
    westoy  
       2022-03-10 14:57:26 +08:00
    对方要针对 app id 和 IP 双重限流你玩出花儿也没效果, 而且你也没法保证对方不偷量啊

    找对方商务谈再开个限制放开的接口啊

    没得谈就再引入一个供应商
    sampeng
        18
    sampeng  
       2022-03-10 18:08:27 +08:00
    短信供应商遍地都是的。。。你偏偏吊死在一个连大量发短信都做不到的供应商上。。。
    sampeng
        19
    sampeng  
       2022-03-10 18:11:16 +08:00
    但是你这个肯定会限流的结论怎么得到的?是客户说的?还是你猜的?人家就不能收到一个请求,自己放自己队列里么。。。为啥会不行?我们连 aws 和阿里云发短信都是循环循环里面直接调 sdk ,同样是一条一条发的,他限不限流和你没关系,你要做的只是限流的时候你别崩溃和出现其他问题。你压根就不用考虑他会不会挂
    jamsfox
        20
    jamsfox  
       2022-03-10 18:17:49 +08:00
    可以了解下时间轮能不能满足你们的需求
    Jekins
        21
    Jekins  
    OP
       2022-03-10 18:39:14 +08:00
    @sampeng 感谢老哥回复.必须使用客户提供的(他们自己公司内部的短信接口)..这个是内部系统.没办法.要不然就上阿里云之类的了. 另外是客户自己的说的不支持.不然我也不会折腾了.
    teem
        22
    teem  
       2022-03-10 19:58:58 +08:00
    哪家短信供应商这么垃圾?我用的批量通知,接口参数本身就支持电话数组,短信供应方会合适处理。
    killergun
        23
    killergun  
       2022-03-10 20:05:05 +08:00
    换提供商啊,还能在一棵树上吊死
    seakingii
        24
    seakingii  
       2022-03-10 20:10:19 +08:00
    自己维护一个队列,简单点就把要发的短信存数据库.
    根据对方的 API 的限流一条条发.超过限流了就等一会再发.
    ryanbuu
        25
    ryanbuu  
       2022-03-10 20:10:23 +08:00 via iPhone
    qps 很高的话个人认为可以做 mq ,请求的时候 http 做连接池等之类的优化~
    ps: #19 说了半天是在说明“限流”相关的问题,您这#21 为啥全程在解释为啥不能用阿里云…?
    killergun
        26
    killergun  
       2022-03-10 20:11:40 +08:00
    如果公司短信很多的话,就应该有使用多家短信服务,不然短信平台出问题了,短信相关的功能全挂了
    byte10
        27
    byte10  
       2022-03-26 11:16:13 +08:00
    没有一个正确的回答呀。。。少年,你用 NIO 啊,一秒可以发送几万条。。你看看我的视频吧,有讲解的 https://www.bilibili.com/video/BV1FS4y1o7QB 。但是你说对方有限流,那么这个是无解的,可以通过申请多个短信账号去发,要么就跟他们服务商谈判。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3610 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 10:34 PVG 18:34 LAX 03:34 JFK 06:34
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86