我已经为支付API编写了一个消费者。我的代码只是发出一个POST请求,并从API获取响应。我实现了与网:: HTTP,这里的代码中的相关行:Net :: HTTP - 冲洗或关闭
http = Net::HTTP.new(uri.host, 443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(params)
response = http.request(request)
此工作多年,然而,最近一些请求已经达到超时时,API处于压力之下。 API维护者想出了这个解释:
我们在刷新HTTP响应后同步地将数据传递给RabbitMQ。显然,在程序在消费者端继续之前,一些HTTP库等待连接关闭,我们认为这发生在这里。请重新配置您的消费者不要等待结束,而是在反应被刷新后继续。
我不确定Net :: HTTP是如何实现的,它是否真的在响应被刷新时等待关闭。文档没有提及任何内容,也没有设置来控制这些。更糟糕的是,我真的不知道如何模拟这个。
任何想法都非常欢迎!