INT-2243: Delayer: Add 'expression' Support
Previously, the `<delayer>` provided a `delay-header-name` attribute. In complex cases there was need to precede it with `<header-enricher>`. * Add support for an 'expression' attribute and sub-element * Deprecate `delay-header-name` * Make `DelayHandler.DelayedMessageWrapper` *public* to allow access for Messages in the Store * Add tests * Add 'What's new' section * Polishing Delayer's doc regarding new abilities JIRA: https://jira.springsource.org/browse/INT-2243, https://jira.springsource.org/browse/INT-3049 INT-2243: ban delay-header-name with expression INT-2243 Polishing INT-2243: fall-back to default on Eval Exception INT-2243: DelayedMessageWrapper refactoring * Make `DelayedMessageWrapper` Spring Data Mongo mapping compatible. In terms of Spring Data - add Persistence Constructor INT-2243 add 'ignore-expression-failures' support * Add `ignore-expression-failures` to the `<delayer>` * Add tests for `ignore-expression-failures` * Add a note to the RM * Describe SpEL side-effects for `DelayHandler` Doc Polishing
This commit is contained in:
committed by
Gary Russell
parent
67fd4a5a60
commit
afe56ca6d5
@@ -33,10 +33,10 @@ import org.springframework.integration.MessageChannel;
|
||||
import org.springframework.integration.MessagingException;
|
||||
import org.springframework.integration.core.MessageHandler;
|
||||
import org.springframework.integration.core.PollableChannel;
|
||||
import org.springframework.integration.handler.DelayHandler;
|
||||
import org.springframework.integration.store.MessageGroup;
|
||||
import org.springframework.integration.store.MessageGroupStore;
|
||||
import org.springframework.integration.support.MessageBuilder;
|
||||
import org.springframework.integration.test.util.TestUtils;
|
||||
import org.springframework.integration.util.UUIDConverter;
|
||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
|
||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
|
||||
@@ -75,7 +75,8 @@ public class DelayerHandlerRescheduleIntegrationTests {
|
||||
MessageGroupStore messageStore = context.getBean("messageStore", MessageGroupStore.class);
|
||||
|
||||
assertEquals(0, messageStore.getMessageGroupCount());
|
||||
input.send(MessageBuilder.withPayload("test1").build());
|
||||
Message<String> message1 = MessageBuilder.withPayload("test1").build();
|
||||
input.send(message1);
|
||||
input.send(MessageBuilder.withPayload("test2").build());
|
||||
|
||||
// Emulate restart and check DB state before next start
|
||||
@@ -101,8 +102,10 @@ public class DelayerHandlerRescheduleIntegrationTests {
|
||||
MessageGroup messageGroup = messageStore.getMessageGroup(delayerMessageGroupId);
|
||||
Message<?> messageInStore = messageGroup.getMessages().iterator().next();
|
||||
Object payload = messageInStore.getPayload();
|
||||
assertEquals("DelayedMessageWrapper", payload.getClass().getSimpleName());
|
||||
assertEquals("test1", TestUtils.getPropertyValue(payload, "original.payload"));
|
||||
|
||||
//INT-3049
|
||||
assertTrue(payload instanceof DelayHandler.DelayedMessageWrapper);
|
||||
assertEquals(message1, ((DelayHandler.DelayedMessageWrapper) payload).getOriginal());
|
||||
|
||||
context.refresh();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user