INT-1586 added 'receive-timeout', 'recovery-interval', and 'idle-consumer-limit' attributes
This commit is contained in:
@@ -56,7 +56,9 @@ public class JmsMessageDrivenEndpointParser extends AbstractSingleBeanDefinition
|
||||
JmsAdapterParserUtils.DESTINATION_NAME_ATTRIBUTE,
|
||||
"destination-resolver", "transaction-manager",
|
||||
"concurrent-consumers", "max-concurrent-consumers",
|
||||
"max-messages-per-task", "idle-task-execution-limit", "selector"
|
||||
"max-messages-per-task", "selector",
|
||||
"receive-timeout", "recovery-interval",
|
||||
"idle-consumer-limit", "idle-task-execution-limit"
|
||||
};
|
||||
|
||||
|
||||
@@ -141,6 +143,9 @@ public class JmsMessageDrivenEndpointParser extends AbstractSingleBeanDefinition
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "concurrent-consumers");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "max-concurrent-consumers");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "max-messages-per-task");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "receive-timeout");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "recovery-interval");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "idle-consumer-limit");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "idle-task-execution-limit");
|
||||
builder.addPropertyValue("autoStartup", false);
|
||||
return BeanDefinitionReaderUtils.registerWithGeneratedName(builder.getBeanDefinition(), parserContext.getRegistry());
|
||||
|
||||
@@ -401,6 +401,9 @@
|
||||
<xsd:attribute name="concurrent-consumers" type="xsd:string"/>
|
||||
<xsd:attribute name="max-concurrent-consumers" type="xsd:string"/>
|
||||
<xsd:attribute name="max-messages-per-task" type="xsd:string"/>
|
||||
<xsd:attribute name="receive-timeout" type="xsd:string"/>
|
||||
<xsd:attribute name="recovery-interval" type="xsd:string"/>
|
||||
<xsd:attribute name="idle-consumer-limit" type="xsd:string"/>
|
||||
<xsd:attribute name="idle-task-execution-limit" type="xsd:string"/>
|
||||
</xsd:extension>
|
||||
</xsd:complexContent>
|
||||
@@ -544,6 +547,9 @@
|
||||
<xsd:attribute name="concurrent-consumers" type="xsd:string"/>
|
||||
<xsd:attribute name="max-concurrent-consumers" type="xsd:string"/>
|
||||
<xsd:attribute name="max-messages-per-task" type="xsd:string"/>
|
||||
<xsd:attribute name="receive-timeout" type="xsd:string"/>
|
||||
<xsd:attribute name="recovery-interval" type="xsd:string"/>
|
||||
<xsd:attribute name="idle-consumer-limit" type="xsd:string"/>
|
||||
<xsd:attribute name="idle-task-execution-limit" type="xsd:string"/>
|
||||
<xsd:attribute name="reply-time-to-live" type="xsd:string"/>
|
||||
<xsd:attribute name="reply-priority" type="xsd:string"/>
|
||||
|
||||
@@ -236,6 +236,30 @@ public class JmsInboundGatewayParserTests {
|
||||
gateway.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGatewayWithReceiveTimeout() {
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"jmsGatewayWithContainerSettings.xml", this.getClass());
|
||||
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithReceiveTimeout");
|
||||
gateway.start();
|
||||
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
|
||||
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
|
||||
assertEquals(1111L, new DirectFieldAccessor(container).getPropertyValue("receiveTimeout"));
|
||||
gateway.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGatewayWithRecoveryInterval() {
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"jmsGatewayWithContainerSettings.xml", this.getClass());
|
||||
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithRecoveryInterval");
|
||||
gateway.start();
|
||||
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
|
||||
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
|
||||
assertEquals(2222L, new DirectFieldAccessor(container).getPropertyValue("recoveryInterval"));
|
||||
gateway.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGatewayWithIdleTaskExecutionLimit() {
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
@@ -248,6 +272,18 @@ public class JmsInboundGatewayParserTests {
|
||||
gateway.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGatewayWithIdleConsumerLimit() {
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"jmsGatewayWithContainerSettings.xml", this.getClass());
|
||||
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gatewayWithIdleConsumerLimit");
|
||||
gateway.start();
|
||||
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
|
||||
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
|
||||
assertEquals(33, new DirectFieldAccessor(container).getPropertyValue("idleConsumerLimit"));
|
||||
gateway.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGatewayWithContainerReference() {
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
|
||||
@@ -30,6 +30,7 @@ import org.springframework.integration.core.PollableChannel;
|
||||
import org.springframework.integration.history.MessageHistory;
|
||||
import org.springframework.integration.jms.JmsMessageDrivenEndpoint;
|
||||
import org.springframework.integration.test.util.TestUtils;
|
||||
import org.springframework.jms.listener.AbstractMessageListenerContainer;
|
||||
import org.springframework.jms.support.destination.JmsDestinationAccessor;
|
||||
|
||||
/**
|
||||
@@ -65,4 +66,52 @@ public class JmsMessageDrivenChannelAdapterParserTests {
|
||||
assertEquals(Boolean.TRUE, container.isPubSubDomain());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGatewayWithReceiveTimeout() {
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"jmsInboundWithContainerSettings.xml", this.getClass());
|
||||
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("adapterWithReceiveTimeout");
|
||||
gateway.start();
|
||||
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
|
||||
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
|
||||
assertEquals(1111L, new DirectFieldAccessor(container).getPropertyValue("receiveTimeout"));
|
||||
gateway.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGatewayWithRecoveryInterval() {
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"jmsInboundWithContainerSettings.xml", this.getClass());
|
||||
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("adapterWithRecoveryInterval");
|
||||
gateway.start();
|
||||
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
|
||||
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
|
||||
assertEquals(2222L, new DirectFieldAccessor(container).getPropertyValue("recoveryInterval"));
|
||||
gateway.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGatewayWithIdleTaskExecutionLimit() {
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"jmsInboundWithContainerSettings.xml", this.getClass());
|
||||
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("adapterWithIdleTaskExecutionLimit");
|
||||
gateway.start();
|
||||
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
|
||||
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
|
||||
assertEquals(7, new DirectFieldAccessor(container).getPropertyValue("idleTaskExecutionLimit"));
|
||||
gateway.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGatewayWithIdleConsumerLimit() {
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"jmsInboundWithContainerSettings.xml", this.getClass());
|
||||
JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("adapterWithIdleConsumerLimit");
|
||||
gateway.start();
|
||||
AbstractMessageListenerContainer container = (AbstractMessageListenerContainer)
|
||||
new DirectFieldAccessor(gateway).getPropertyValue("listenerContainer");
|
||||
assertEquals(33, new DirectFieldAccessor(container).getPropertyValue("idleConsumerLimit"));
|
||||
gateway.stop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,6 +35,20 @@
|
||||
request-pub-sub-domain="false"
|
||||
max-messages-per-task="99"/>
|
||||
|
||||
<jms:inbound-gateway id="gatewayWithReceiveTimeout"
|
||||
connection-factory="testConnectionFactory"
|
||||
request-channel="requestChannel"
|
||||
request-destination-name="testTopic"
|
||||
request-pub-sub-domain="true"
|
||||
receive-timeout="1111"/>
|
||||
|
||||
<jms:inbound-gateway id="gatewayWithRecoveryInterval"
|
||||
connection-factory="testConnectionFactory"
|
||||
request-channel="requestChannel"
|
||||
request-destination-name="testTopic"
|
||||
request-pub-sub-domain="true"
|
||||
recovery-interval="2222"/>
|
||||
|
||||
<jms:inbound-gateway id="gatewayWithIdleTaskExecutionLimit"
|
||||
connection-factory="testConnectionFactory"
|
||||
request-channel="requestChannel"
|
||||
@@ -42,6 +56,13 @@
|
||||
request-pub-sub-domain="true"
|
||||
idle-task-execution-limit="7"/>
|
||||
|
||||
<jms:inbound-gateway id="gatewayWithIdleConsumerLimit"
|
||||
connection-factory="testConnectionFactory"
|
||||
request-channel="requestChannel"
|
||||
request-destination-name="testTopic"
|
||||
request-pub-sub-domain="true"
|
||||
idle-consumer-limit="33"/>
|
||||
|
||||
<bean id="testConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
|
||||
<constructor-arg>
|
||||
<bean class="org.springframework.integration.jms.StubConnection">
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:si="http://www.springframework.org/schema/integration"
|
||||
xmlns:jms="http://www.springframework.org/schema/integration/jms"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/integration
|
||||
http://www.springframework.org/schema/integration/spring-integration.xsd
|
||||
http://www.springframework.org/schema/integration/jms
|
||||
http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd">
|
||||
|
||||
<jms:message-driven-channel-adapter id="adapterWithReceiveTimeout"
|
||||
connection-factory="testConnectionFactory"
|
||||
destination-name="testQueue"
|
||||
receive-timeout="1111"
|
||||
auto-startup="false"/>
|
||||
|
||||
<jms:message-driven-channel-adapter id="adapterWithRecoveryInterval"
|
||||
connection-factory="testConnectionFactory"
|
||||
destination-name="testQueue"
|
||||
recovery-interval="2222"
|
||||
auto-startup="false"/>
|
||||
|
||||
<jms:message-driven-channel-adapter id="adapterWithIdleTaskExecutionLimit"
|
||||
connection-factory="testConnectionFactory"
|
||||
destination-name="testQueue"
|
||||
idle-task-execution-limit="7"
|
||||
auto-startup="false"/>
|
||||
|
||||
<jms:message-driven-channel-adapter id="adapterWithIdleConsumerLimit"
|
||||
connection-factory="testConnectionFactory"
|
||||
destination-name="testQueue"
|
||||
idle-consumer-limit="33"
|
||||
auto-startup="false"/>
|
||||
|
||||
<bean id="testConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
|
||||
<constructor-arg>
|
||||
<bean class="org.springframework.integration.jms.StubConnection">
|
||||
<constructor-arg value="message-driven-test"/>
|
||||
</bean>
|
||||
</constructor-arg>
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
Reference in New Issue
Block a user