diff --git a/spring-integration-core/src/main/java/org/springframework/integration/channel/PriorityChannel.java b/spring-integration-core/src/main/java/org/springframework/integration/channel/PriorityChannel.java index f664e01440..60dd1f00fb 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/channel/PriorityChannel.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/channel/PriorityChannel.java @@ -84,6 +84,11 @@ public class PriorityChannel extends QueueChannel { this(0, null); } + @Override + public int getRemainingCapacity() { + return this.upperBound.availablePermits(); + } + @Override protected boolean doSend(Message message, long timeout) { if (!this.upperBound.tryAcquire(timeout)) { diff --git a/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests-context.xml index 182d2d1dd2..d379d9c854 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests-context.xml +++ b/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests-context.xml @@ -13,11 +13,12 @@ - - + + + + diff --git a/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests.java b/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests.java index 8cbc89e50a..4e0ed1f4cc 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests.java @@ -24,6 +24,7 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; +import org.springframework.integration.channel.PriorityChannel; import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.support.MessageBuilder; import org.springframework.test.context.ContextConfiguration; @@ -31,6 +32,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * @author Mark Fisher + * @author Artem Bilan */ @ContextConfiguration @RunWith(SpringJUnit4ClassRunner.class) @@ -51,12 +53,16 @@ public class ChannelCapacityPlaceholderTests { assertEquals(98, channel.getRemainingCapacity()); } - - public interface TestService { - - @org.springframework.integration.annotation.Gateway(requestChannel = "channel") - void test(); - + @Test + public void testCapacityOnPriorityChannel() { + PriorityChannel channel = context.getBean("priorityChannel", PriorityChannel.class); + assertNotNull(channel); + assertEquals(99, channel.getRemainingCapacity()); + channel.send(MessageBuilder.withPayload("test1").build()); + channel.send(MessageBuilder.withPayload("test2").build()); + assertEquals(97, channel.getRemainingCapacity()); + assertNotNull(channel.receive(0)); + assertEquals(98, channel.getRemainingCapacity()); } } diff --git a/spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisQueueGatewayIntegrationTests-context.xml b/spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisQueueGatewayIntegrationTests-context.xml index 21ac79d59f..836fd30791 100644 --- a/spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisQueueGatewayIntegrationTests-context.xml +++ b/spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisQueueGatewayIntegrationTests-context.xml @@ -26,7 +26,7 @@