【发布时间】:2021-03-05 00:53:59
【问题描述】:
我有一个调用第三方 API 的控制台应用程序,基本上它从数据库中获取记录并通过他们的 WCF API 将它们推送到第三方。
由于各种原因(主要是第三方 API 非常慢 - 7 秒响应),我们想要并行发布多条记录,因此我们已经开始这样做,但是我们现在看到第三方 API 出现了一些奇怪的行为,其中它正在复制记录。
API 的开发人员向我们建议,这是因为我们通过同一个连接发送请求(这是有道理的,因为 .net 将重用连接)并且他们不/不能/不会支持这一点,他们将只支持一个连接上的一个请求,然后必须关闭连接。
我的问题是,我如何在 .net 核心 (2.2) 中执行此操作我们目前正在使用 HttpClient,我希望在可能的情况下重用连接 - 我如何保证我们为每个请求使用新连接?
【问题讨论】:
-
这是寻找另一个第三方解决方案的完美案例。至少可以说,您得到的答复没有意义,也令人不满意。我的意思是底层套接字连接与简单的并发/数据完整性检查有什么关系
¯\_(ツ)_/¯ -
不幸的是,这不是一个选项,它对业务至关重要(对我们而言),我们已经使用它多年,因此它已完全集成到业务中,但现在我们需要使用它会导致我们的问题。转移到另一种产品会花费我们大量的费用。
-
是的,我明白了。但是,这里很少有没有真正意义的事情。解决问题的责任将落在开发人员身上。通常,您实际上无法访问 WFC / HttpClient 调用上的套接字层,这一切都是为您完成的。除非他们在谈论更高级别的会议,否则我永远看不出这将如何成为问题。你能显示这些调用的实际最小代码吗?是否涉及令牌,这实际上是 WCF 还是您使用的是 HttpClient
-
尝试使用 http 客户端和 vs2017 生成的客户端,结果相同。我早上一起举个例子,现在是午夜,我已经受够了这一天!我对服务的理解是,它实际上并没有处理请求,而是将数据转储到队列中,然后由某种描述的 Windows 服务处理,然后向我们返回响应.. 它是如何做到的还不清楚,但这显然是问题所在。该 api 已停产,技术上不支持,所以我们最终应该逐步淘汰它......但这现在无济于事:)
-
我可能还应该说第三方 API 的开发人员并没有说这绝对是问题 - 只是我们应该调查它作为它的“可能”原因。