Skip to content

Commit 97a0cbb

Browse files
authored
Merge pull request eugenp#8119 from alimate/BAEL-3275-2
BAEL-3275: Using blocking queue for pub-sub
2 parents a9e855e + 0367910 commit 97a0cbb

File tree

2 files changed

+12
-15
lines changed

2 files changed

+12
-15
lines changed

persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/queue/RedisMessageSubscriber.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44
import org.springframework.data.redis.connection.MessageListener;
55
import org.springframework.stereotype.Service;
66

7-
import java.util.ArrayList;
8-
import java.util.List;
7+
import java.util.concurrent.ArrayBlockingQueue;
8+
import java.util.concurrent.BlockingQueue;
99

1010
@Service
1111
public class RedisMessageSubscriber implements MessageListener {
1212

13-
public static List<String> messageList = new ArrayList<String>();
13+
public static BlockingQueue<String> messages = new ArrayBlockingQueue<String>(100);
1414

1515
public void onMessage(final Message message, final byte[] pattern) {
16-
messageList.add(message.toString());
16+
messages.add(message.toString());
1717
System.out.println("Message received: " + new String(message.getBody()));
1818
}
1919
}

persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package com.baeldung.spring.data.redis;
22

3-
import static org.junit.Assert.assertTrue;
4-
5-
import java.io.IOException;
6-
import java.util.UUID;
7-
3+
import com.baeldung.spring.data.redis.config.RedisConfig;
4+
import com.baeldung.spring.data.redis.queue.RedisMessagePublisher;
5+
import com.baeldung.spring.data.redis.queue.RedisMessageSubscriber;
86
import org.junit.AfterClass;
97
import org.junit.BeforeClass;
108
import org.junit.Test;
@@ -14,12 +12,12 @@
1412
import org.springframework.test.annotation.DirtiesContext.ClassMode;
1513
import org.springframework.test.context.ContextConfiguration;
1614
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
15+
import redis.embedded.RedisServerBuilder;
1716

18-
import com.baeldung.spring.data.redis.config.RedisConfig;
19-
import com.baeldung.spring.data.redis.queue.RedisMessagePublisher;
20-
import com.baeldung.spring.data.redis.queue.RedisMessageSubscriber;
17+
import java.io.IOException;
18+
import java.util.UUID;
2119

22-
import redis.embedded.RedisServerBuilder;
20+
import static org.junit.Assert.assertTrue;
2321

2422
@RunWith(SpringJUnit4ClassRunner.class)
2523
@ContextConfiguration(classes = RedisConfig.class)
@@ -46,7 +44,6 @@ public static void stopRedisServer() throws IOException {
4644
public void testOnMessage() throws Exception {
4745
String message = "Message " + UUID.randomUUID();
4846
redisMessagePublisher.publish(message);
49-
Thread.sleep(1000);
50-
assertTrue(RedisMessageSubscriber.messageList.get(0).contains(message));
47+
assertTrue(RedisMessageSubscriber.messages.take().contains(message));
5148
}
5249
}

0 commit comments

Comments
 (0)