Add back-off attribute to JMS namespace
This commit adds a "back-off" attribute to the jms:listener-container element so that a BackOff instance can be provided for users of the XML namespace. Issue: SPR-11746
This commit is contained in:
@@ -161,6 +161,7 @@ public class JmsNamespaceHandlerTests {
|
||||
assertEquals("wrong concurrency", 3, container.getConcurrentConsumers());
|
||||
assertEquals("wrong concurrency", 5, container.getMaxConcurrentConsumers());
|
||||
assertEquals("wrong prefetch", 50, container.getMaxMessagesPerTask());
|
||||
assertSame(context.getBean("testBackOff"),new DirectFieldAccessor(container).getPropertyValue("backOff"));
|
||||
|
||||
assertEquals("phase cannot be customized by the factory", Integer.MAX_VALUE, container.getPhase());
|
||||
}
|
||||
@@ -216,12 +217,13 @@ public class JmsNamespaceHandlerTests {
|
||||
|
||||
@Test
|
||||
public void testRecoveryInterval() {
|
||||
long recoveryInterval1 = getRecoveryInterval("listener1");
|
||||
long recoveryInterval2 = getRecoveryInterval("listener2");
|
||||
Object testBackOff = context.getBean("testBackOff");
|
||||
BackOff backOff1 = getBackOff("listener1");
|
||||
BackOff backOff2 = getBackOff("listener2");
|
||||
long recoveryInterval3 = getRecoveryInterval(DefaultMessageListenerContainer.class.getName() + "#0");
|
||||
|
||||
assertEquals(1000L, recoveryInterval1);
|
||||
assertEquals(1000L, recoveryInterval2);
|
||||
assertSame(testBackOff, backOff1);
|
||||
assertSame(testBackOff, backOff2);
|
||||
assertEquals(DefaultMessageListenerContainer.DEFAULT_RECOVERY_INTERVAL, recoveryInterval3);
|
||||
}
|
||||
|
||||
@@ -300,9 +302,13 @@ public class JmsNamespaceHandlerTests {
|
||||
return (ErrorHandler) new DirectFieldAccessor(container).getPropertyValue("errorHandler");
|
||||
}
|
||||
|
||||
private long getRecoveryInterval(String containerBeanName) {
|
||||
private BackOff getBackOff(String containerBeanName) {
|
||||
DefaultMessageListenerContainer container = this.context.getBean(containerBeanName, DefaultMessageListenerContainer.class);
|
||||
BackOff backOff = (BackOff) new DirectFieldAccessor(container).getPropertyValue("backOff");
|
||||
return (BackOff) new DirectFieldAccessor(container).getPropertyValue("backOff");
|
||||
}
|
||||
|
||||
private long getRecoveryInterval(String containerBeanName) {
|
||||
BackOff backOff = getBackOff(containerBeanName);
|
||||
assertEquals(FixedBackOff.class, backOff.getClass());
|
||||
return ((FixedBackOff)backOff).getInterval();
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
connection-factory="testConnectionFactory" task-executor="testTaskExecutor"
|
||||
destination-resolver="testDestinationResolver" message-converter="testMessageConverter"
|
||||
transaction-manager="testTransactionManager" error-handler="testErrorHandler"
|
||||
cache="connection" concurrency="3-5" prefetch="50" receive-timeout="100" recovery-interval="1000" phase="99">
|
||||
cache="connection" concurrency="3-5" prefetch="50" receive-timeout="100" back-off="testBackOff" phase="99">
|
||||
<jms:listener id="listener1" destination="testDestination" ref="testBean1" method="setName"/>
|
||||
<jms:listener id="listener2" destination="testDestination" ref="testBean2" method="setName" response-destination="responseDestination"/>
|
||||
</jms:listener-container>
|
||||
@@ -43,7 +43,8 @@
|
||||
connection-factory="testConnectionFactory" task-executor="testTaskExecutor"
|
||||
destination-resolver="testDestinationResolver" message-converter="testMessageConverter"
|
||||
transaction-manager="testTransactionManager" error-handler="testErrorHandler"
|
||||
concurrency="3-5" prefetch="50" receive-timeout="100" recovery-interval="1000"/>
|
||||
concurrency="3-5" prefetch="50" receive-timeout="100"
|
||||
recovery-interval="1000" back-off="testBackOff"/>
|
||||
|
||||
<!-- the default ConnectionFactory -->
|
||||
<bean id="connectionFactory" class="org.springframework.jms.StubConnectionFactory"/>
|
||||
@@ -67,6 +68,10 @@
|
||||
|
||||
<bean id="testErrorHandler" class="org.springframework.jms.config.JmsNamespaceHandlerTests$TestErrorHandler"/>
|
||||
|
||||
<bean id="testBackOff" class="org.springframework.util.FixedBackOff">
|
||||
<property name="interval" value="1000"/>
|
||||
</bean>
|
||||
|
||||
<bean id="testBean1" class="org.springframework.tests.sample.beans.TestBean"/>
|
||||
|
||||
<bean id="testBean2" class="org.springframework.tests.sample.beans.TestBean"/>
|
||||
|
||||
Reference in New Issue
Block a user