gpt4 book ai didi

multithreading - JMS MDB或ScheduledThreadPoolExecutor用于异步任务

转载 作者:行者123 更新时间:2023-12-03 12:52:39 24 4
gpt4 key购买 nike

我使用JMS Message Driven Bean已有一段时间了,它对于异步任务非常有效。我知道有很多方法可以处理异步过程,但是我很好奇使用JMS Message Driven BeanScheduledThreadPoolExecutor有什么好处?

例如,我有一个Web服务,可以异步处理一些任务。因此,我看到了两个主要区别。如果我将使用ScheduledThreadPoolExecutor我不需要应用程序服务器,则可以使用一个servlet容器例如Tomcat,因为我没有使用任何EJB东西,因此对于MDB,我需要一个应用服务器,例如玻璃鱼。但是就处理实际的异步过程而言,与每种ScheduledThreadPoolExecutorMDB相比,优点是什么?

最佳答案

ScheduledThreadPoolExecutor 用于调度任务,与MDB最佳对应的抽象是 ExecutorService 。但是回到您的问题。

MDB的重量更大,API的复杂得多,并且原则上它实际上是为传输数据而不是逻辑而设计的。另一方面,ExecutorService是实际线程池之上的薄层。因此,如果您需要性能,低延迟和小的开销,请使用普通线程池。

使用MDB和JMS的唯一原因是需要持久性和事务支持。当然,这会带来更大的开销,因为每个消息都需要保留。但是,您不会丢失排队的任何任务,甚至不会由于崩溃而在处理过程中丢失任何任务。

关于multithreading - JMS MDB或ScheduledThreadPoolExecutor用于异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14861944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com