package org.redisson.spring.data.connection; import java.util.Arrays; import java.util.concurrent.atomic.AtomicReference; import org.awaitility.Awaitility; import org.awaitility.Duration; import org.junit.Test; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; public class RedissonSubscribeTest extends BaseConnectionTest { @Test public void testSubscribe() { RedissonConnection connection = new RedissonConnection(redisson); AtomicReference<byte[]> msg = new AtomicReference<byte[]>(); connection.subscribe(new MessageListener() { @Override public void onMessage(Message message, byte[] pattern) { msg.set(message.getBody()); } }, "test".getBytes()); connection.publish("test".getBytes(), "msg".getBytes()); Awaitility.await().atMost(Duration.ONE_SECOND) .until(() -> Arrays.equals("msg".getBytes(), msg.get())); connection.getSubscription().unsubscribe(); connection.publish("test".getBytes(), "msg".getBytes()); } @Test public void testUnSubscribe() { RedissonConnection connection = new RedissonConnection(redisson); AtomicReference<byte[]> msg = new AtomicReference<byte[]>(); connection.subscribe(new MessageListener() { @Override public void onMessage(Message message, byte[] pattern) { msg.set(message.getBody()); } }, "test".getBytes()); connection.publish("test".getBytes(), "msg".getBytes()); Awaitility.await().atMost(Duration.ONE_SECOND) .until(() -> Arrays.equals("msg".getBytes(), msg.get())); connection.getSubscription().unsubscribe(); } }