removed deprecated trigger sub-elements from core

This commit is contained in:
Mark Fisher
2011-08-31 06:08:53 -04:00
parent e4313153ce
commit 46925cf3e4
28 changed files with 49 additions and 195 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2010 the original author or authors.
* Copyright 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,7 +18,6 @@ package org.springframework.integration.config.xml;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -50,7 +49,7 @@ public class PollerParser extends AbstractBeanDefinitionParser {
private static final String MULTIPLE_TRIGGER_DEFINITIONS = "A <poller> cannot specify more than one trigger configuration.";
private static final String NO_TRIGGER_DEFINITIONS = "A <poller> must have a one and only one trigger configuration.";
private static final String NO_TRIGGER_DEFINITIONS = "A <poller> must have one and only one trigger configuration.";
private static final String PERIODIC_TRIGGER_CLASSNAME = "org.springframework.scheduling.support.PeriodicTrigger";
@@ -91,28 +90,23 @@ public class PollerParser extends AbstractBeanDefinitionParser {
configureTrigger(element, metadataBuilder, parserContext);
IntegrationNamespaceUtils.setValueIfAttributeDefined(metadataBuilder, element, "max-messages-per-poll");
IntegrationNamespaceUtils.setValueIfAttributeDefined(metadataBuilder, element, "receive-timeout");
Element txElement = DomUtils.getChildElementByTagName(element, "transactional");
Element adviceChainElement = DomUtils.getChildElementByTagName(element, "advice-chain");
configureAdviceChain(adviceChainElement, txElement, metadataBuilder, parserContext);
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(metadataBuilder, element, "task-executor");
String errorChannel = element.getAttribute("error-channel");
if (StringUtils.hasText(errorChannel)){
if (StringUtils.hasText(errorChannel)) {
BeanDefinitionBuilder errorHandler = BeanDefinitionBuilder.genericBeanDefinition(
"org.springframework.integration.channel.MessagePublishingErrorHandler");
errorHandler.addPropertyReference("defaultErrorChannel", errorChannel);
metadataBuilder.addPropertyValue("errorHandler", errorHandler.getBeanDefinition());
}
return metadataBuilder.getBeanDefinition();
}
private void configureTrigger(Element pollerElement, BeanDefinitionBuilder targetBuilder, ParserContext parserContext) {
// Polling frequency can be configured either through attributes or by using sub-elements
// However, since Spring Integration 2.0 the trigger sub-elements are deprecated
String triggerAttribute = pollerElement.getAttribute("trigger");
String fixedRateAttribute = pollerElement.getAttribute("fixed-rate");
String fixedDelayAttribute = pollerElement.getAttribute("fixed-delay");
@@ -158,22 +152,6 @@ public class PollerParser extends AbstractBeanDefinitionParser {
builder.getBeanDefinition(), parserContext.getRegistry());
triggerBeanNames.add(triggerBeanName);
}
Element intervalElement = DomUtils.getChildElementByTagName(pollerElement, "interval-trigger");
if (intervalElement != null) {
parserContext.getReaderContext().warning(
"Poller configuration via 'interval-trigger' subelements is deprecated, " +
"use the 'fixed-delay' or 'fixed-rate' attribute instead.", pollerElement);
triggerBeanNames.add(parseIntervalTrigger(intervalElement, parserContext));
}
else {
Element cronElement = DomUtils.getChildElementByTagName(pollerElement, "cron-trigger");
if (cronElement != null) {
parserContext.getReaderContext().warning(
"Poller configuration via 'cron-trigger' subelements is deprecated, " +
"use the 'cron' attribute instead.", pollerElement);
triggerBeanNames.add(parseCronTrigger(cronElement, parserContext));
}
}
if (triggerBeanNames.isEmpty()) {
parserContext.getReaderContext().error(NO_TRIGGER_DEFINITIONS, pollerElement);
}
@@ -184,59 +162,25 @@ public class PollerParser extends AbstractBeanDefinitionParser {
}
/**
* Parse an "interval-trigger" element
*/
private String parseIntervalTrigger(Element element, ParserContext parserContext) {
String interval = element.getAttribute("interval");
if (!StringUtils.hasText(interval)) {
parserContext.getReaderContext().error(
"the 'interval' attribute is required for an <interval-trigger/>", element);
}
TimeUnit timeUnit = TimeUnit.valueOf(element.getAttribute("time-unit"));
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(PERIODIC_TRIGGER_CLASSNAME);
builder.addConstructorArgValue(interval);
builder.addConstructorArgValue(timeUnit);
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "initial-delay");
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "fixed-rate");
return BeanDefinitionReaderUtils.registerWithGeneratedName(builder.getBeanDefinition(), parserContext.getRegistry());
}
/**
* Parse a "cron-trigger" element
*/
private String parseCronTrigger(Element element, ParserContext parserContext) {
String cronExpression = element.getAttribute("expression");
if (!StringUtils.hasText(cronExpression)) {
parserContext.getReaderContext().error(
"the 'expression' attribute is required for a <cron-trigger/>", element);
}
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(CRON_TRIGGER_CLASSNAME);
builder.addConstructorArgValue(cronExpression);
return BeanDefinitionReaderUtils.registerWithGeneratedName(builder.getBeanDefinition(), parserContext.getRegistry());
}
/**
* Parse a "transactional" element and configure TransactionInterceptor with "transactionManager"
* and other "transactionDefinition" properties. This advisor will be applied on Polling Task proxy
* Parse a "transactional" element and configure a TransactionInterceptor with "transactionManager"
* and other "transactionDefinition" properties. This advisor will be applied on the Polling Task proxy
* (see {@link org.springframework.integration.endpoint.AbstractPollingEndpoint}).
*/
private BeanDefinition configureTransactionAttributes(Element txElement, BeanDefinitionBuilder targetBuilder, ParserContext parserContext) {
String TX_PKG_PREFIX = "org.springframework.transaction.interceptor";
BeanDefinitionBuilder txDefinitionBuilder =
BeanDefinitionBuilder.genericBeanDefinition(TX_PKG_PREFIX + ".DefaultTransactionAttribute");
BeanDefinitionBuilder.genericBeanDefinition(TX_PKG_PREFIX + ".DefaultTransactionAttribute");
txDefinitionBuilder.addPropertyValue("propagationBehaviorName", "PROPAGATION_" + txElement.getAttribute("propagation"));
txDefinitionBuilder.addPropertyValue("isolationLevelName", "ISOLATION_" + txElement.getAttribute("isolation"));
txDefinitionBuilder.addPropertyValue("timeout", txElement.getAttribute("timeout"));
txDefinitionBuilder.addPropertyValue("readOnly", txElement.getAttribute("read-only"));
BeanDefinitionBuilder attributeSourceBuilder =
BeanDefinitionBuilder.genericBeanDefinition(TX_PKG_PREFIX + ".MatchAlwaysTransactionAttributeSource");
BeanDefinitionBuilder.genericBeanDefinition(TX_PKG_PREFIX + ".MatchAlwaysTransactionAttributeSource");
attributeSourceBuilder.addPropertyValue("transactionAttribute", txDefinitionBuilder.getBeanDefinition());
BeanDefinitionBuilder txInterceptorBuilder =
BeanDefinitionBuilder.genericBeanDefinition(TX_PKG_PREFIX + ".TransactionInterceptor");
BeanDefinitionBuilder.genericBeanDefinition(TX_PKG_PREFIX + ".TransactionInterceptor");
txInterceptorBuilder.addPropertyReference("transactionManager", txElement.getAttribute("transaction-manager"));
txInterceptorBuilder.addPropertyValue("transactionAttributeSource", attributeSourceBuilder.getBeanDefinition());
return txInterceptorBuilder.getBeanDefinition();
}
@@ -246,10 +190,10 @@ public class PollerParser extends AbstractBeanDefinitionParser {
@SuppressWarnings({ "unchecked", "rawtypes" })
private void configureAdviceChain(Element adviceChainElement, Element txElement, BeanDefinitionBuilder targetBuilder, ParserContext parserContext) {
ManagedList adviceChain = new ManagedList();
if (txElement != null){
if (txElement != null) {
adviceChain.add(this.configureTransactionAttributes(txElement, targetBuilder, parserContext));
}
if (adviceChainElement != null){
if (adviceChainElement != null) {
NodeList childNodes = adviceChainElement.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
Node child = childNodes.item(i);

View File

@@ -1148,27 +1148,6 @@ endpoint itself is a Polling Consumer for a channel with a queue.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element name="interval-trigger" type="intervalTriggerType">
<xsd:annotation>
<xsd:documentation>
NOTE: The 'interval-trigger' sub-element is deprecated as of Spring Integration 2.0 and will be
removed in version
2.1.
Use one of the interval trigger attributes instead ('fixed-delay' or 'fixed-rate').
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="cron-trigger" type="cronTriggerType">
<xsd:annotation>
<xsd:documentation>
NOTE: The 'cron-trigger' sub-element is deprecated as of Spring Integration 2.0 and will be
removed in version 2.1.
Use the 'cron' attribute instead.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:choice>
<xsd:choice>
<xsd:element name="transactional" type="transactionalType" minOccurs="0" maxOccurs="1" />
<xsd:element name="advice-chain" minOccurs="0" maxOccurs="1">

View File

@@ -11,11 +11,8 @@
<queue capacity="5" />
</channel>
<aggregator ref="summer" method="sum" input-channel="input"
output-channel="output">
<poller task-executor="executor" max-messages-per-poll="5">
<interval-trigger interval="20" />
</poller>
<aggregator ref="summer" method="sum" input-channel="input" output-channel="output">
<poller task-executor="executor" max-messages-per-poll="5" fixed-delay="20" />
</aggregator>
<task:executor id="executor" pool-size="5"/>

View File

@@ -14,9 +14,7 @@
</channel>
<aggregator input-channel="input" output-channel="output">
<poller task-executor="executor" max-messages-per-poll="5">
<interval-trigger interval="20" />
</poller>
<poller task-executor="executor" max-messages-per-poll="5" fixed-delay="20" />
</aggregator>
<task:executor id="executor" pool-size="5"/>

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/integration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration
@@ -38,9 +39,7 @@
</chain>
<chain input-channel="pollableInput1" output-channel="output">
<poller>
<interval-trigger interval="10000" />
</poller>
<poller fixed-delay="10000" />
<filter ref="typeSelector" />
<service-activator ref="testHandler" />
</chain>
@@ -50,9 +49,7 @@
<service-activator ref="testHandler" />
</chain>
<poller id="topLevelPoller">
<interval-trigger interval="5000" />
</poller>
<poller id="topLevelPoller" fixed-delay="5000" />
<chain input-channel="beanInput" output-channel="output">
<beans:bean

View File

@@ -12,9 +12,7 @@
</channel>
<inbound-channel-adapter id="methodInvokingSource" method="getMessage" channel="queueChannel" auto-startup="false">
<poller max-messages-per-poll="1">
<interval-trigger interval="10000"/>
</poller>
<poller max-messages-per-poll="1" fixed-delay="10000"/>
<beans:bean class="org.springframework.integration.config.ChannelAdapterParserTests$SampleBean"/>
</inbound-channel-adapter>

View File

@@ -12,9 +12,7 @@
</channel>
<service-activator input-channel="endpointParserTestInput" ref="testHandler">
<poller>
<interval-trigger interval="100"/>
</poller>
<poller fixed-delay="100"/>
</service-activator>
<beans:bean id="testHandler" class="org.springframework.integration.config.TestHandler">

View File

@@ -13,9 +13,7 @@
</channel>
<bridge input-channel="pollableChannel" output-channel="output1">
<poller max-messages-per-poll="2">
<interval-trigger interval="3000" />
</poller>
<poller max-messages-per-poll="2" fixed-delay="3000" />
</bridge>
<channel id="output1">

View File

@@ -19,9 +19,7 @@
<b:bean id="endpoint" class="org.springframework.integration.config.xml.ConstructorAutowireTests$TestEndpoint" />
<inbound-channel-adapter ref="endpoint" method="aProducer" channel="input">
<poller max-messages-per-poll="1">
<interval-trigger interval="300" time-unit="SECONDS" />
</poller>
<poller max-messages-per-poll="1" fixed-delay="300000"/>
</inbound-channel-adapter>
<splitter input-channel="input" output-channel="output" ref="endpoint" method="aSplitter" />

View File

@@ -7,10 +7,6 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd">
<poller id="pollerWithSubElement" receive-timeout="1234">
<cron-trigger expression="*/10 * 9-17 * * MON-FRI"/>
</poller>
<poller id="pollerWithAttribute" cron="*/10 * 9-17 * * MON-FRI" receive-timeout="1234"/>
</beans:beans>

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2009 the original author or authors.
* Copyright 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -40,20 +40,6 @@ public class CronTriggerParserTests {
@Autowired
private ApplicationContext context;
@Test
public void checkConfigWithSubElement() {
Object poller = context.getBean("pollerWithSubElement");
assertEquals(PollerMetadata.class, poller.getClass());
PollerMetadata metadata = (PollerMetadata) poller;
Trigger trigger = metadata.getTrigger();
assertEquals(CronTrigger.class, trigger.getClass());
DirectFieldAccessor accessor = new DirectFieldAccessor(trigger);
String expression = (String) new DirectFieldAccessor(
accessor.getPropertyValue("sequenceGenerator"))
.getPropertyValue("expression");
assertEquals("*/10 * 9-17 * * MON-FRI", expression);
}
@Test
public void checkConfigWithAttribute() {
Object poller = context.getBean("pollerWithAttribute");

View File

@@ -22,9 +22,7 @@
</channel>
<header-enricher input-channel="errorChannelInput" output-channel="failInput">
<poller max-messages-per-poll="1">
<interval-trigger interval="3000"/>
</poller>
<poller max-messages-per-poll="1" fixed-delay="3000"/>
<error-channel ref="testErrorChannel"/>
</header-enricher>

View File

@@ -20,9 +20,7 @@
<outbound-channel-adapter id="adapterB" channel="channelB" method="out" order="99" auto-startup="false">
<beans:bean class="org.springframework.integration.config.xml.MethodInvokingOutboundChannelAdapterParserTests$TestBean"/>
<poller task-executor="executor" max-messages-per-poll="5">
<interval-trigger interval="20" />
</poller>
<poller task-executor="executor" max-messages-per-poll="5" fixed-delay="20" />
</outbound-channel-adapter>
<task:executor id="executor" pool-size="5" />

View File

@@ -20,9 +20,7 @@
<object-to-string-transformer input-channel="directInput" output-channel="output"/>
<object-to-string-transformer input-channel="queueInput" output-channel="output">
<poller>
<interval-trigger interval="10000"/>
</poller>
<poller fixed-delay="10000"/>
</object-to-string-transformer>
</beans:beans>

View File

@@ -7,8 +7,6 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd">
<poller id="defaultPollerWithId" default="true">
<interval-trigger interval="5000"/>
</poller>
<poller id="defaultPollerWithId" default="true" fixed-delay="5000"/>
</beans:beans>

View File

@@ -7,8 +7,6 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd">
<poller default="true">
<interval-trigger interval="5000"/>
</poller>
<poller default="true" fixed-delay="5000"/>
</beans:beans>

View File

@@ -34,9 +34,7 @@ splitter-inner-success-with-poller=\
</channel> \
<splitter id="testSplitter" input-channel="inChannel" output-channel="outChannel"> \
<beans:bean class="org.springframework.integration.config.xml.InnerDefinitionHandlerAwareEndpointParserTests$TestSplitter" /> \
<poller task-executor="executor" max-messages-per-poll="5"> \
<interval-trigger interval="20" /> \
</poller> \
<poller task-executor="executor" max-messages-per-poll="5" fixed-delay="20" /> \
</splitter> \
<task:executor id="executor" pool-size="5" /> \
</beans:beans>
@@ -59,9 +57,7 @@ splitter-inner-success-with-poller-reversed-order=\
<queue capacity="2" /> \
</channel> \
<splitter id="testSplitter" input-channel="inChannel" output-channel="outChannel"> \
<poller task-executor="executor" max-messages-per-poll="5"> \
<interval-trigger interval="20" /> \
</poller> \
<poller task-executor="executor" max-messages-per-poll="5" fixed-delay="20"/> \
<beans:bean class="org.springframework.integration.config.xml.InnerDefinitionHandlerAwareEndpointParserTests$TestSplitter" /> \
</splitter> \
<task:executor id="executor" pool-size="5" /> \
@@ -296,9 +292,7 @@ aggregator-inner-concurrent-success=\
<queue capacity="5" /> \
</channel> \
<aggregator input-channel="inChannel" method="sum" output-channel="outChannel"> \
<poller task-executor="executor" max-messages-per-poll="5"> \
<interval-trigger interval="20" /> \
</poller> \
<poller task-executor="executor" max-messages-per-poll="5" fixed-delay="20" /> \
<beans:bean class="org.springframework.integration.config.xml.InnerDefinitionHandlerAwareEndpointParserTests$TestAggregator"/> \
</aggregator> \
<task:executor id="executor" pool-size="5" /> \
@@ -323,9 +317,7 @@ aggregator-inner-concurrent-success-reorder-bean-poller=\
</channel> \
<aggregator input-channel="inChannel" method="sum" output-channel="outChannel"> \
<beans:bean class="org.springframework.integration.config.xml.InnerDefinitionHandlerAwareEndpointParserTests$TestAggregator"/> \
<poller task-executor="executor" max-messages-per-poll="5"> \
<interval-trigger interval="20" /> \
</poller> \
<poller task-executor="executor" max-messages-per-poll="5" fixed-delay="20"/> \
</aggregator> \
<task:executor id="executor" pool-size="5" /> \
</beans:beans>

View File

@@ -7,12 +7,8 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd">
<poller id="defaultPoller1" default="true">
<interval-trigger interval="3000"/>
</poller>
<poller id="defaultPoller1" default="true" fixed-delay="3000"/>
<poller id="defaultPoller2" default="true">
<interval-trigger interval="10000"/>
</poller>
<poller id="defaultPoller2" default="true" fixed-delay="10000"/>
</beans:beans>

View File

@@ -7,8 +7,7 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd">
<poller id="poller">
<interval-trigger interval="5000"/>
<poller id="poller" fixed-delay="5000">
<advice-chain>
<ref bean="adviceBean1"/>
<beans:bean class="org.springframework.integration.config.xml.TestAdviceBean">

View File

@@ -7,8 +7,6 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd">
<poller>
<interval-trigger interval="3000"/>
</poller>
<poller fixed-delay="3000"/>
</beans:beans>

View File

@@ -24,8 +24,7 @@
ref="testBean"
method="good"
output-channel="output">
<poller max-messages-per-poll="1">
<interval-trigger interval="10000"/>
<poller max-messages-per-poll="1" fixed-delay="10000">
<transactional transaction-manager="txManager" propagation="MANDATORY"/>
</poller>
</service-activator>

View File

@@ -20,8 +20,7 @@
ref="testBean"
method="good"
output-channel="output">
<poller max-messages-per-poll="1">
<interval-trigger interval="10000"/>
<poller max-messages-per-poll="1" fixed-delay="10000">
<transactional transaction-manager="txManager" propagation="NOT_SUPPORTED"/>
</poller>
</service-activator>

View File

@@ -20,8 +20,7 @@
ref="testBean"
method="good"
output-channel="output">
<poller max-messages-per-poll="1">
<interval-trigger interval="10000"/>
<poller max-messages-per-poll="1" fixed-delay="10000">
<transactional transaction-manager="txManager" propagation="REQUIRED"/>
</poller>
</service-activator>

View File

@@ -20,8 +20,7 @@
ref="testBean"
method="good"
output-channel="output">
<poller max-messages-per-poll="1">
<interval-trigger interval="10000"/>
<poller max-messages-per-poll="1" fixed-delay="10000">
<transactional transaction-manager="txManager" propagation="REQUIRES_NEW"/>
</poller>
</service-activator>

View File

@@ -20,8 +20,7 @@
ref="testBean"
method="good"
output-channel="output">
<poller max-messages-per-poll="1">
<interval-trigger interval="10000"/>
<poller max-messages-per-poll="1" fixed-delay="10000">
<transactional transaction-manager="txManager" propagation="SUPPORTS"/>
</poller>
</service-activator>

View File

@@ -7,9 +7,7 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration.xsd">
<si:poller id="poller" default="true">
<si:interval-trigger interval="50"/>
</si:poller>
<si:poller id="poller" default="true" fixed-delay="50"/>
<si:channel id="channel1"/>
<si:channel id="channel2">

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-2.0.xsd
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"
xmlns:si="http://www.springframework.org/schema/integration"
xmlns:task="http://www.springframework.org/schema/task">
@@ -37,10 +37,9 @@
<si:service-activator input-channel="echoWithErrorAsyncChannel" method="echoWithErrorAsync">
<bean class="org.springframework.integration.gateway.GatewayInvokingMessageHandlerTests$SimpleService" />
<si:poller max-messages-per-poll="1" task-executor="executor">
<si:interval-trigger interval="100" time-unit="MILLISECONDS"/>
</si:poller>
<si:poller max-messages-per-poll="1" task-executor="executor" fixed-delay="100"/>
</si:service-activator>
<task:executor id="executor" pool-size="5"/>

View File

@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-2.0.xsd">
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd">
<int:gateway id="sampleGateway"
service-interface="org.springframework.integration.history.MessageHistoryIntegrationTests.SampleGateway"
@@ -14,9 +14,7 @@
</int:channel>
<int:bridge id="testBridge" input-channel="bridgeInChannel" output-channel="headerEnricherChannel">
<int:poller max-messages-per-poll="1">
<int:interval-trigger interval="100"/>
</int:poller>
<int:poller max-messages-per-poll="1" fixed-delay="100"/>
</int:bridge>
<int:header-enricher id="testHeaderEnricher" input-channel="headerEnricherChannel" output-channel="chainChannel">