/** * Construct an instance with the provided timeout and output processor, and default * correlation strategy. * @param timeout the timeout in milliseconds. * @param outputProcessor the output {@link MessageGroupProcessor}. * @param correlationStrategy the correlation strategy. */ public BarrierMessageHandler(long timeout, MessageGroupProcessor outputProcessor, CorrelationStrategy correlationStrategy) { Assert.notNull(outputProcessor, "'messageGroupProcessor' cannot be null"); this.messageGroupProcessor = outputProcessor; this.correlationStrategy = (correlationStrategy == null ? new HeaderAttributeCorrelationStrategy(IntegrationMessageHeaderAccessor.CORRELATION_ID) : correlationStrategy); this.timeout = timeout; }
@Test public void testHeaderAttributeCorrelationStrategy() { String testedHeaderValue = "@!arbitraryTestValue!@"; String testHeaderName = "header.for.test"; Message<?> message = MessageBuilder.withPayload("irrelevantData").setHeader(testHeaderName, testedHeaderValue).build(); HeaderAttributeCorrelationStrategy correlationStrategy = new HeaderAttributeCorrelationStrategy(testHeaderName); assertEquals(testedHeaderValue, correlationStrategy.getCorrelationKey(message)); }
public AbstractCorrelatingMessageHandler(MessageGroupProcessor processor, MessageGroupStore store, CorrelationStrategy correlationStrategy, ReleaseStrategy releaseStrategy) { Assert.notNull(processor, "'processor' must not be null"); Assert.notNull(store, "'store' must not be null"); setMessageStore(store); this.outputProcessor = processor; this.correlationStrategy = correlationStrategy == null ? new HeaderAttributeCorrelationStrategy(IntegrationMessageHeaderAccessor.CORRELATION_ID) : correlationStrategy; this.releaseStrategy = releaseStrategy == null ? new SimpleSequenceSizeReleaseStrategy() : releaseStrategy; this.releaseStrategySet = releaseStrategy != null; this.sequenceAware = this.releaseStrategy instanceof SequenceSizeReleaseStrategy; }
@Bean public IntegrationFlow barrierFlow() { return f -> f .barrier(10000, b -> b .correlationStrategy(new HeaderAttributeCorrelationStrategy(BARRIER)) .outputProcessor(g -> g.getMessages() .stream() .skip(1) .findFirst() .get())) .channel("barrierResults"); }
@Bean public MessageHandler gatherer2() { return new AggregatingMessageHandler(new DefaultAggregatingMessageGroupProcessor(), new SimpleMessageStore(), new HeaderAttributeCorrelationStrategy(IntegrationMessageHeaderAccessor.CORRELATION_ID), new MessageCountReleaseStrategy(3)); }
@Bean public MessageHandler gatherer1() { return new AggregatingMessageHandler( new ExpressionEvaluatingMessageGroupProcessor("^[payload gt 5] ?: -1D"), new SimpleMessageStore(), new HeaderAttributeCorrelationStrategy(IntegrationMessageHeaderAccessor.CORRELATION_ID), new ExpressionEvaluatingReleaseStrategy("size() == 2")); }
/** * Construct an instance with the provided timeout and output processor, and default * correlation strategy. * @param timeout the timeout in milliseconds. * @param outputProcessor the output {@link MessageGroupProcessor}. * @param correlationStrategy the correlation strategy. */ public BarrierMessageHandler(long timeout, MessageGroupProcessor outputProcessor, CorrelationStrategy correlationStrategy) { Assert.notNull(outputProcessor, "'messageGroupProcessor' cannot be null"); this.messageGroupProcessor = outputProcessor; this.correlationStrategy = (correlationStrategy == null ? new HeaderAttributeCorrelationStrategy(IntegrationMessageHeaderAccessor.CORRELATION_ID) : correlationStrategy); this.timeout = timeout; }
public AbstractCorrelatingMessageHandler(MessageGroupProcessor processor, MessageGroupStore store, CorrelationStrategy correlationStrategy, ReleaseStrategy releaseStrategy) { Assert.notNull(processor, "'processor' must not be null"); Assert.notNull(store, "'store' must not be null"); setMessageStore(store); this.outputProcessor = processor; this.correlationStrategy = correlationStrategy == null ? new HeaderAttributeCorrelationStrategy(IntegrationMessageHeaderAccessor.CORRELATION_ID) : correlationStrategy; this.releaseStrategy = releaseStrategy == null ? new SimpleSequenceSizeReleaseStrategy() : releaseStrategy; this.releaseStrategySet = releaseStrategy != null; this.sequenceAware = this.releaseStrategy instanceof SequenceSizeReleaseStrategy; }
@Bean public IntegrationFlow barrierFlow() { return f -> f .barrier(10000, b -> b .correlationStrategy(new HeaderAttributeCorrelationStrategy(BARRIER)) .outputProcessor(g -> g.getMessages() .stream() .skip(1) .findFirst() .get())) .channel(c -> c.queue("barrierResults")); }