Spring jms:listener-container并发不适用于参数化值

时间:2018-06-25 20:45:37

标签: java spring jms

我有一个使用spring 2.5.6的应用程序,该应用程序使用spring jms:listener-container

<jms:listener-container concurrency="25" acknowledge="auto"
 connection-factory="jmsCachingConnectionFactory"  cache="none">

我工作得很好,但是现在我需要外部化属性文件中的并发值。我已经在加载其他属性而没有错误。

我尝试了以下代码:

<jms:listener-container concurrency="${spring.jms.concurrency}" acknowledge="auto"
 connection-factory="jmsCachingConnectionFactory"  cache="none">

但是它会打印出一种解析错误:

[2018-06-25 17:36:05,292] ERROR  [MSC service thread 1-1] context.ContextLoader => initWebApplicationContext: (ContextLoader.java:215) - Context initialization failed: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Invalid concurrency value [${spring.jms.concurrency}]: only single maximum integer (e.g. "5") and minimum-maximum combo (e.g. "3-5") supported.
    Offending resource: class path resource [app-context.xml]; nested exception is java.lang.NumberFormatException: For input string: "${spring.jms.concurrency}"
        at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
        at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)

还尝试创建String Bean并加载参数,然后按如下所示注入到侦听器中,但它会输出相同的错误

<bean id="concurrency" class="java.lang.String" >
    <constructor-arg value="${spring.jms.concurrency}" />
</bean>

是否有一种方法可以在spring jms listener-container中外部化/参数化并发值。

PS。当前使用的是Spring 2.5.6,目前无法升级。

0 个答案:

没有答案