Java - 为500k行数据调用API。 Spring批处理还是Websocket?

时间:2016-07-27 08:18:33

标签: java websocket spring-batch spring-websocket

我有两个CSV文件,一个包含500k +客户记录。我正在尝试将每一行转换为客户对象,并对我也负责的API执行POST。

这种方法存在明显的问题,即触发500k + HTTP调用并导致达到最大HTTP连接。

我有两个建议,打开一个WebSocket或使用Spring Batch。这是打开WebSocket并发送消息而不是打开多个HTTP连接的好用例吗?或者更方便的是采用更传统的春季批次?

1 个答案:

答案 0 :(得分:2)

由于它似乎是您自己的服务器,您应该只创建一个服务器路由,允许您一次发送多个记录,然后您可以将事情批量化为更少的API调用。

如果它真的是500k记录,你需要发送,你可能仍然希望将它们分批到多个请求,但你至少可以一次10k,并管理你的连接,所以你不要#39 ;在任何给定时间内,飞行中有超过5-10个请求(因为您的服务器不太可能一次处理更多的请求,这样可以防止客户端耗尽网络资源)。

或者,如果你想更像文件上传,你可以发送500k记录的数据,让你的服务器像文件上传一样处理它,然后一旦成功,让服务器处理它。

实际上,您可能只想上传CSV并让服务器直接处理它。

虽然webSocket连接允许您为多个请求使用相同的连接(这是一件好事),但您仍然不想发送500k个人记录。只是发送那么多单独的请求的开销,无论是webSocket还是http请求都是低效的。相反,您确实希望批量处理请求并按请求发送大块数据。