GH-3446: Stream support in the MessageGroupStore
Fixes https://github.com/spring-projects/spring-integration/issues/3446 * For better resources utilization provide a `Stream<Message<?>>` API on the `MessageGroupStore`, `MessageGroup` and `MessageGroupQueue` * Use this API in the `DelayHandler` when it reschedules persisted messages
This commit is contained in:
committed by
Gary Russell
parent
51e240b761
commit
f0f2c41ae3
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
* Copyright 2002-2021 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.
|
||||
@@ -22,8 +22,7 @@ import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -35,8 +34,7 @@ import org.springframework.integration.handler.DelayHandler;
|
||||
import org.springframework.integration.test.util.TestUtils;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.MessageHandler;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
||||
import org.springframework.transaction.TransactionDefinition;
|
||||
import org.springframework.transaction.interceptor.MatchAlwaysTransactionAttributeSource;
|
||||
import org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource;
|
||||
@@ -51,8 +49,7 @@ import org.springframework.transaction.interceptor.TransactionInterceptor;
|
||||
*
|
||||
* @since 1.0.3
|
||||
*/
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration
|
||||
@SpringJUnitConfig
|
||||
public class DelayerParserTests {
|
||||
|
||||
@Autowired
|
||||
@@ -70,7 +67,7 @@ public class DelayerParserTests {
|
||||
.isEqualTo("headers.foo");
|
||||
assertThat(TestUtils.getPropertyValue(delayHandler, "messagingTemplate.sendTimeout", Long.class))
|
||||
.isEqualTo(987L);
|
||||
assertThat(TestUtils.getPropertyValue(delayHandler, "taskScheduler")).isNull();
|
||||
assertThat(TestUtils.getPropertyValue(delayHandler, "taskScheduler")).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -110,7 +107,8 @@ public class DelayerParserTests {
|
||||
assertThat(adviceChain.size()).isEqualTo(1);
|
||||
Object advice = adviceChain.get(0);
|
||||
assertThat(advice instanceof TransactionInterceptor).isTrue();
|
||||
TransactionAttributeSource transactionAttributeSource = ((TransactionInterceptor) advice).getTransactionAttributeSource();
|
||||
TransactionAttributeSource transactionAttributeSource =
|
||||
((TransactionInterceptor) advice).getTransactionAttributeSource();
|
||||
assertThat(transactionAttributeSource instanceof MatchAlwaysTransactionAttributeSource).isTrue();
|
||||
Method method = MessageHandler.class.getMethod("handleMessage", Message.class);
|
||||
TransactionDefinition definition = transactionAttributeSource.getTransactionAttribute(method, null);
|
||||
@@ -130,7 +128,8 @@ public class DelayerParserTests {
|
||||
|
||||
Object txAdvice = adviceChain.get(1);
|
||||
assertThat(txAdvice.getClass()).isEqualTo(TransactionInterceptor.class);
|
||||
TransactionAttributeSource transactionAttributeSource = ((TransactionInterceptor) txAdvice).getTransactionAttributeSource();
|
||||
TransactionAttributeSource transactionAttributeSource =
|
||||
((TransactionInterceptor) txAdvice).getTransactionAttributeSource();
|
||||
assertThat(transactionAttributeSource.getClass()).isEqualTo(NameMatchTransactionAttributeSource.class);
|
||||
HashMap<?, ?> nameMap = TestUtils.getPropertyValue(transactionAttributeSource, "nameMap", HashMap.class);
|
||||
assertThat(nameMap.toString()).isEqualTo("{*=PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,readOnly}");
|
||||
|
||||
Reference in New Issue
Block a user