我有一个使用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,目前无法升级。