业务流程

BXS_null 2018-10-16 05:07:47
流程:
1.我们去访问别人的接口,如果请求的参数达到一定的要求算访问成功。
2.访问成功之后,对面会对我们进行回调另一个接口,给一个数值。
3.我们现在需要在访问他们的的接口之前判断一下回调的数值之和,如果达到某个数字就停止访问
问题:
1.访问成功到回调我们接收到数据有接近30秒的时间
2.有时候访问量特别大,一秒钟就访问好几次,这样的话等到他们给我们回调的时候就可能已经超量了
3.在访问的时候也不能使用sleep 可能造成阻塞

现在就是不知道如何解决这个问题,而且限量只能根据访问成功之后的数值进行判断。
...全文
230 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-10-16
  • 打赏
  • 举报
回复
A->B->C
A、C 在一端,B在另一端

C运行后设置标志
A在调用 B 之前判断标志

线程有可能解决并发问题
但你 如果在我们访问之前被别人用这个参数访问过了,我们是不能算成功的。显然是个串行任务
  • 打赏
  • 举报
回复
直接使用一个定时器,或者现在的干净简洁的语法
await Task.Delay(30000);
这样的异步回调语句。你自己还设计什么队列、阻塞、循环呢? 真正的技术代码,根本不阻塞。 而这个问题,需要的是业务创意,业务沟通和改变。不是技术。
  • 打赏
  • 举报
回复
纠结技术名词儿不过是障眼法。 问问不懂技术的人,例如刷厕所的大妈,如何解决那个隐喻问题?
  • 打赏
  • 举报
回复
引用 4 楼 weixin_40068689 的回复:
我突然想到一个办法,不知道可行不可行。 如果现在要访问这个接口,我就先不访问,把他放到一个队列Queue里面。然后写一个线程 用while(Queue.count>0){去判断那个值是否达到要求,如过没达到要求就取出队列的一个去访问接口,然后 sleep(30s)}。 这样就不对阻塞了,但是有另一个问题,这个接口是有竞争性的,如果在我们访问之前被别人用这个参数访问过了,我们是不能算成功的。 这里可以算一个备用计划把。。。希望有更好的办法
这就是定时器机制30秒回调,用什么队列?你每一个请求都延迟30秒,但是30秒之后取出的仍然不是访问这个接口时的真实的判断依据(而是30秒之前的)。丝毫没有解决问题。
wanghui0380 2018-10-16
  • 打赏
  • 举报
回复
Rx

Do(()=>{},CanchenlToken)

while(xxxx)
{
CancelToken
}

这是一种,当然cancel本身会有多余执行

如果你不想多余执行,只能是采用线程安全队列,然后同步访问。

其实这个基本类似节流阀,而常规限流手段,也就如此。最常见的就是令牌桶,漏桶。(这两个名词你自己百度)
BXS_null 2018-10-16
  • 打赏
  • 举报
回复
我突然想到一个办法,不知道可行不可行。 如果现在要访问这个接口,我就先不访问,把他放到一个队列Queue里面。然后写一个线程 用while(Queue.count>0){去判断那个值是否达到要求,如过没达到要求就取出队列的一个去访问接口,然后 sleep(30s)}。 这样就不对阻塞了,但是有另一个问题,这个接口是有竞争性的,如果在我们访问之前被别人用这个参数访问过了,我们是不能算成功的。 这里可以算一个备用计划把。。。希望有更好的办法
BXS_null 2018-10-16
  • 打赏
  • 举报
回复
引用 1 楼 hanjun0612 的回复:
3 人家没有回调你们接口给你们数值,你们怎么判断数值之和? 从访问到回调,要30秒是不是有点过分???
额,这里其他几家都比较正常,20几秒能收到回调,访问量没那么大,可能一分钟或则好几分钟一次, 但是就是有问题的这家访问量太大。
  • 打赏
  • 举报
回复
这不是技术问题。这应该找到现实的”隐喻“,也就是假设根本不懂软件的普通人是怎么想、怎么解决问题的。往往扫厕所的大妈要比程序员更能明白是否已经解决了问题,而程序员满脑子只知道纠结技术名词儿。 现实中,如果你女朋友有时候会告诉你”不要给我打电话“,但是这个警告可能晚5分钟,那么你如何避免打扰你的女朋友呢?你自己给出解答,然后用到程序中。
正怒月神 2018-10-16
  • 打赏
  • 举报
回复
3 人家没有回调你们接口给你们数值,你们怎么判断数值之和? 从访问到回调,要30秒是不是有点过分???

110,476

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧