如何对Spring JMS侦听器进行线程池

| 我将按以下步骤设置JMS订户侦听器,以实现5个线程池监听topATopic的目标,但是,我在运行时看到的是多个使用者处理同一条记录(recordCount *#of使用者)。 考虑到我是春季新手,我假设我做错了什么。
<bean id=\"messageListener\" class=\"com.abc.app.mdp.Receiver\">
<property name=\"bean\" ref=\"bean\" />
</bean>

<jms:listener-container container-type=\"default\"
connection-factory=\"connectionFactory\" acknowledge=\"auto\" concurrency=\"5\" destination-type=\"topic\" prefetch=\"1\" cache=\"none\" >
<jms:listener destination=\"topCli_Service\" ref=\"messageListener\" 
method=\"onMessage\" subscription=\"AProjectSubscriber\" />
</jms:listener-container>

<bean id=\"connectionFactory\" class=\"org.springframework.jndi.JndiObjectFactoryB ean\">
<property name=\"jndiName\" value=\"jms/jms-top-notx\" />
</bean>
有人可以指出我实现目标的方向吗?     
已邀请:
看一下您的侦听器容器配置上的并发设置。 Spring JMS文档建议将主题侦听器的并发性设置为1。见下文。   并发:每个侦听器启动的并发会话/用户数。可以是表示最大数的简单数字(例如\“ 5 \”),也可以是指示下限和上限的范围(例如\“ 3-5 \”)。请注意,指定的最小值只是一个提示,在运行时可能会被忽略。默认值为1;如果主题侦听器或队列顺序很重要,则将并发限制为1;考虑将其提高到一般队列。 这篇文章与您问题的其余部分相似。 如果您需要多个线程来跟上消息量,则消息侦听器可以委托给Spring TaskExecutor来异步处理消息。 TaskExecutor可以由多种实现(包括线程池)支持。     
如果希望给定消息仅由一个使用者使用,则应使用队列而不是主题。主题消息将广播给所有可用的使用者。     

要回复问题请先登录注册