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 .