diff --git a/spring-integration-core/src/main/resources/org/springframework/integration/config/xml/spring-integration-2.2.xsd b/spring-integration-core/src/main/resources/org/springframework/integration/config/xml/spring-integration-2.2.xsd index b96e1d6d84..c0c0d00e44 100644 --- a/spring-integration-core/src/main/resources/org/springframework/integration/config/xml/spring-integration-2.2.xsd +++ b/spring-integration-core/src/main/resources/org/springframework/integration/config/xml/spring-integration-2.2.xsd @@ -1302,7 +1302,7 @@ 'transactional' and 'advice-chain' elements specify the configuration List of AOP Advice - to proxying DelayHandler's 'release Message task'. + to proxy DelayHandler's 'release Message task'. @@ -3783,14 +3783,14 @@ endpoint itself is a Polling Consumer for a channel with a queue. - + or poller sub element. Used to take action after the transaction completes () or after - the channel.send() is complete (). + the channel.send() is complete (). ]]> @@ -3798,7 +3798,7 @@ endpoint itself is a Polling Consumer for a channel with a queue. ), or after the transaction commits (). The #root variable of the - expression evaluation is the original message; a BeanResolver is also available. + expression evaluation is the original message; a BeanResolver is also available. ]]> @@ -3822,7 +3822,7 @@ endpoint itself is a Polling Consumer for a channel with a queue. ), or after the transaction rolls back (). The #root variable of the - expression evaluation is the original message; a BeanResolver is also available. + expression evaluation is the original message; a BeanResolver is also available. ]]> diff --git a/src/reference/docbook/delayer.xml b/src/reference/docbook/delayer.xml index df5b56d23a..50091fb595 100644 --- a/src/reference/docbook/delayer.xml +++ b/src/reference/docbook/delayer.xml @@ -57,7 +57,7 @@ delay-header-name="delay" scheduler="exampleTaskScheduler"/> - ]]> + ]]> If you configure an external ThreadPoolTaskScheduler you can set on this scheduler property waitForTasksToCompleteOnShutdown = true. @@ -95,14 +95,37 @@ If a delayed Message remained in the MessageStore more than its 'delay', it will be sent immediately after startup. + + The <delayer> can be enriched with mutually exclusive sub-elements <transactional> + or <advice-chain>. The List of these AOP Advices is applied to the proxied internal + DelayHandler.ReleaseMessageHandler, which has the responsibility to release the Message, after the delay, + on a Thread of the scheduled task. It might be used, for example, when the downstream message flow throws an + Exception and the ReleaseMessageHandler's transaction will be rolled back. In this case the delayed + Message will remain in the persistent MessageStore. You can use any custom + org.aopalliance.aop.Advice implementation within the <advice-chain>. + A sample configuration of the <delayer> may look like this: + + + + + + + + + + ]]> + The DelayHandler can be exported as a JMX MBean with managed operations getDelayedMessageCount and reschedulePersistedMessages, which allows the rescheduling of delayed persisted Messages at runtime, for example, if the - TaskScheduler has previously been stopped. These operations can be invoked via a Control Bus command: - delayerReschedulingMessage = MessageBuilder.withPayload("@'delayer.handler'.reschedulePersistedMessages()").build(); - controlBusChannel.send(delayerReschedulingMessage);]]> + TaskScheduler has previously been stopped. + These operations can be invoked via a Control Bus command: + delayerReschedulingMessage = + MessageBuilder.withPayload("@'delayer.handler'.reschedulePersistedMessages()").build(); + controlBusChannel.send(delayerReschedulingMessage);]]> For more information regarding the Message Store, JMX and the Control Bus, please read .