INT-1793 added a 'receive-timeout' attribute to the JMS inbound-channel-adapter element
This commit is contained in:
@@ -57,7 +57,8 @@ abstract class JmsAdapterParserUtils {
|
||||
|
||||
private static final String[] JMS_TEMPLATE_ATTRIBUTES = {
|
||||
"connection-factory", "message-converter", "destination-resolver", "pub-sub-domain",
|
||||
"time-to-live", "priority", "delivery-persistent", "explicit-qos-enabled", "acknowledge"
|
||||
"time-to-live", "priority", "delivery-persistent", "explicit-qos-enabled", "acknowledge",
|
||||
"receive-timeout"
|
||||
};
|
||||
|
||||
|
||||
@@ -123,8 +124,9 @@ abstract class JmsAdapterParserUtils {
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "priority");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "delivery-persistent");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "explicit-qos-enabled");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "receive-timeout");
|
||||
Integer acknowledgeMode = parseAcknowledgeMode(element, parserContext);
|
||||
if (acknowledgeMode != null){
|
||||
if (acknowledgeMode != null) {
|
||||
builder.addPropertyValue("sessionAcknowledgeMode", acknowledgeMode);
|
||||
}
|
||||
|
||||
|
||||
@@ -473,6 +473,14 @@
|
||||
</xsd:annotation>
|
||||
</xsd:attribute>
|
||||
<xsd:attribute name="extract-payload" type="xsd:string" default="true"/>
|
||||
<xsd:attribute name="receive-timeout" type="xsd:string">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation>
|
||||
Timeout for receive calls on the template.
|
||||
NOTE: for JmsTemplate, 0 means indefinite while -1 means no-wait.
|
||||
</xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:attribute>
|
||||
<xsd:attribute name="jms-template" type="xsd:string">
|
||||
<xsd:annotation>
|
||||
<xsd:appinfo>
|
||||
|
||||
@@ -151,6 +151,15 @@ public class JmsInboundChannelAdapterParserTests {
|
||||
assertEquals("test [with selector: TestProperty = 'foo']", message.getPayload());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void pollingAdapterWithReceiveTimeout() {
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"jmsInboundWithReceiveTimeout.xml", this.getClass());
|
||||
JmsTemplate jmsTemplate =
|
||||
TestUtils.getPropertyValue(context.getBean("adapter"), "source.jmsTemplate", JmsTemplate.class);
|
||||
assertEquals(99, jmsTemplate.getReceiveTimeout());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void pollingAdapterWithMessageConverter() {
|
||||
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?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:integration="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:inbound-channel-adapter id="adapter" destination-name="test" receive-timeout="99" channel="output"/>
|
||||
|
||||
<integration:channel id="output">
|
||||
<integration:queue capacity="1"/>
|
||||
</integration:channel>
|
||||
|
||||
<bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
|
||||
<constructor-arg>
|
||||
<bean class="org.springframework.integration.jms.StubConnection">
|
||||
<constructor-arg value="test"/>
|
||||
</bean>
|
||||
</constructor-arg>
|
||||
</bean>
|
||||
|
||||
<bean id="testConverter" class="org.springframework.integration.jms.config.TestMessageConverter"/>
|
||||
|
||||
<integration:poller id="poller" default="true">
|
||||
<integration:interval-trigger interval="500"/>
|
||||
</integration:poller>
|
||||
|
||||
</beans>
|
||||
Reference in New Issue
Block a user