Yan*_*osh 4 asynchronous jms ejb-3.1 websphere-8
我需要使用EJB 3.1异步方法每天处理大约250.000个文档,以便应对整个长期任务。
我这样做是为了使用更多的线程并同时处理更多的文档。这是伪代码示例:
// this returns about 250.000 documents per day
List<Document> documentList = Persistence.listDocumentsToProcess();
for(Document currentDocument: documentList){
//this is the asynchronous call
ejbInstance.processAsynchronously(currentDocument);
}
Run Code Online (Sandbox Code Playgroud)
假设我有一个大小为10和4核心处理器的线程池,我的问题是:
我使用Java EE 6和WebSphere 8.5.5.2
异步EJB方法调用的默认配置如下(来自信息中心):
EJB容器工作管理器具有以下线程池设置:
Run Code Online (Sandbox Code Playgroud)Minimum number of threads = 1 Maximum number of threads = 5 Work request queue size = 0 work objects Work request queue full action = Block Remote Future object duration = 86400 seconds
因此,尝试回答您的问题:
应用程序服务器将同时处理多少个文档?(假定10个大小的线程池)
该线程池适用于所有EJB异步调用,因此首先需要假定您的应用程序是唯一使用EJB异步调用的应用程序。然后,您将可能有10个可运行实例,这些实例将被并行处理。他们是否会被处理并发取决于系统中可用的核心/线程数量,所以你不能有准确的数字(一些核心/线程可以使用CPU等过程中做网站的工作,例如,或)。
当池中的所有线程都在处理文档并且又进行了一次异步调用时,会发生什么情况?
它取决于Work request queue size
和Work request queue full action
设置。如果池中没有可用线程,则将对请求进行排队,直到达到队列大小为止。然后取决于操作,可能是Block
或Fail
。
我采用JMS Queue解决方案有什么改进
吗?取决于您的需求。这是一些优点/缺点JMS解决方案。
优点:
缺点:
归档时间: |
|
查看次数: |
3087 次 |
最近记录: |