【发布时间】:2015-10-17 10:22:53
【问题描述】:
我有一个包含很多对象的列表。 问题是我必须处理这些对象(过程包括克隆、深拷贝、进行数据库调用、运行业务逻辑等。
以正常方式执行此操作,先到先服务确实非常耗时,并且在 Web 应用程序中,这通常会导致服务器端的事务超时(因为从客户端的角度来看,此处理是 anync)。
我如何处理这些对象以便花费最少的时间而不会使数据库过载。
我在服务器环境中使用 java 7。
我已经在使用消息传递解决方案 rabbitmq,它可以为我获取商品及其数量。当我尝试对项目进行深度复制以模仿真实项目(每个项目的业务逻辑应该被唯一处理)并将它们保存到数据库时,就会出现问题。
【问题讨论】:
-
我正在考虑使用 java 的执行器服务在多个线程中运行这个批量请求..
-
虽然我不确定什么是克隆和深拷贝。但是,一些关键字供您思考您的解决方案:批处理、线程池、连接池
-
如果可以做到异步,你可以使用队列和JMS
-
在Java8中你可以考虑并行流,它比执行器简单得多。
-
您可以在 Spring 框架中使用带有事务功能的 Spring 批处理、执行程序、调度程序,但在将数据推送到数据库之前,您必须根据您的要求和数据库的限制对值对象进行更改您要保存在数据库中的对象。如果您的要求是异步的,则所有对象都是有效的,这意味着一个项目的状态不会改变另一个项目的状态,因为上述所有解决方案都以异步方式工作。
标签: java spring jakarta-ee scalability