我们在JMS使用者中使用ThreadPoolExecutor,并将其注入DefaultMessageListenerContainer中。我希望这会在许多消息上运行并发线程,但是我们的日志显示线程ID不会改变,而我们的日志显示对于不同的消息处理,线程ID始终为24。
在这种情况下,这是spring配置:
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"
p:connectionFactory-ref="cachedConnectionFactory"
p:destination-ref="formsCRRDestination"
p:messageListener-ref="formServicePojo"
p:concurrentConsumers="5"
p:idleTaskExecutionLimit="1"
p:maxConcurrentConsumers="25"
p:taskExecutor-ref="threadPoolExecutor"
destroy-method="doShutdown"
>
<bean id="threadPoolExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" >
<property name="corePoolSize" value="1"/>
<property name="maxPoolSize" value="15"/>
<property name="keepAliveSeconds" value="30"/>
</bean>
在不将threadPoolExectuor Bean注入DefaultMessageListenerContainer中之后,现在正在不同的线程中执行消息。
这是结果配置:
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"
p:connectionFactory-ref="cachedConnectionFactory"
p:destination-ref="formsCRRDestination"
p:messageListener-ref="formServicePojo"
p:concurrentConsumers="5"
p:idleTaskExecutionLimit="1"
p:maxConcurrentConsumers="25"
destroy-method="doShutdown"
>
我尝试阅读文档,但我不明白为什么会这样。有什么解释吗?
在Spring中查看了ThreadPoolTaskExecutor代码并阅读了ThreadPoolTaskExecutor的Java文档之后,我认为这是答案:
无限队列。在所有corePoolSize线程都繁忙的情况下,使用无界队列(例如,没有预定义容量的LinkedBlockingQueue)将使新任务排队。因此,将仅创建corePoolSize线程。(因此,maximumPoolSize的值没有任何作用。)
在上面的配置中,默认情况下使用的是LinkedBlockingQueue,而corePoolSize为1。这就是为什么maximumPoolSize不起作用的原因。
我试着运行一个程序,使用线程显示带有数字的乘法、除法、加法和减法表。 但是我希望数字被乘以或相加等。由用户选择。 也就是说,程序应该在用户为每个操作选择一个数字后运行,然后显示结果。
问题内容: 使用node.js时,我希望以每次仅运行10个(或n个)的方式访问多个远程URL。 如果本地发生异常(m次),我也想重试一个请求,但是当状态代码返回错误(5XX,4XX等)时,该请求将视为有效。 这对我来说真的很难缠住我的头。 问题: 无法尝试捕获http.get,因为它是异步的。 需要一种在失败时重试请求的方法。 我需要某种信号量来跟踪当前活动的请求计数。 当所有请求完成时,我想在列
#include <stdio.h> #include <pthread.h> int a = 0; int b = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(1); } } void *thread2_fu
问题内容: 这是执行程序类的方法: 在这里,它等待第二秒,但是当我运行代码时,它将引发异常: 我无法关闭中的并发线程破坏。这是我的代码流: 用Java执行程序类创建一个新线程来运行某些任务,即用 等待10秒以完成任务。 如果任务已完成,则可运行线程也将终止。 如果任务未在10秒内完成,则类应终止线程。 除了在最后一个场景中终止任务以外,其他所有操作都正常。我该怎么办? 问题答案: 该方法只是防止其
我用的是Netty camel-Netty:jar:2 . 10 . 0 . red hat-60024。下面是我对Netty监听器的配置 荨麻:tcp://10.1.33.204:9001?textline=true 在这里,我看到基于调试日志,Netty只创建一个工作线程,所以传入的消息被阻塞,直到现有的消息被处理。 喜欢: 2014-08-23 12:36:48,394|DEBUG|w I/
在一个android服务中,我创建了用于执行一些后台任务的线程。 我遇到一个情况,线程需要在主线程的消息队列上发布特定任务,例如。 有没有方法获取主线程的并从我的另一个线程向它发布/?