-
-
Save BenjaminZehowlt/d02cd5d2c453062264b7f5df1ba7c937 to your computer and use it in GitHub Desktop.
Example usage of Jedis
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package se.wendt.statoil.mastercard; | |
import java.util.ArrayList; | |
import java.util.concurrent.CountDownLatch; | |
import redis.clients.jedis.Jedis; | |
import redis.clients.jedis.JedisPubSub; | |
public class JedisTest { | |
private static final String JEDIS_SERVER = "a.server.somewhere"; | |
private ArrayList<String> messageContainer = new ArrayList<String>(); | |
private CountDownLatch messageReceivedLatch = new CountDownLatch(1); | |
private CountDownLatch publishLatch = new CountDownLatch(1); | |
public static void main(String[] args) throws InterruptedException { | |
new JedisTest().run(); | |
} | |
private void run() throws InterruptedException { | |
setupPublisher(); | |
JedisPubSub jedisPubSub = setupSubscriber(); | |
// publish away! | |
publishLatch.countDown(); | |
messageReceivedLatch.await(); | |
log("Got message: %s", messageContainer.iterator().next()); | |
jedisPubSub.unsubscribe(); | |
} | |
private void setupPublisher() { | |
new Thread(new Runnable() { | |
@Override | |
public void run() { | |
try { | |
log("Connecting"); | |
Jedis jedis = new Jedis(JEDIS_SERVER); | |
log("Waiting to publish"); | |
publishLatch.await(); | |
log("Ready to publish, waiting one sec"); | |
Thread.sleep(1000); | |
log("publishing"); | |
jedis.publish("test", "This is a message"); | |
log("published, closing publishing connection"); | |
jedis.quit(); | |
log("publishing connection closed"); | |
} catch (Exception e) { | |
log(">>> OH NOES Pub, " + e.getMessage()); | |
// e.printStackTrace(); | |
} | |
} | |
}, "publisherThread").start(); | |
} | |
private JedisPubSub setupSubscriber() { | |
final JedisPubSub jedisPubSub = new JedisPubSub() { | |
@Override | |
public void onUnsubscribe(String channel, int subscribedChannels) { | |
log("onUnsubscribe"); | |
} | |
@Override | |
public void onSubscribe(String channel, int subscribedChannels) { | |
log("onSubscribe"); | |
} | |
@Override | |
public void onPUnsubscribe(String pattern, int subscribedChannels) { | |
} | |
@Override | |
public void onPSubscribe(String pattern, int subscribedChannels) { | |
} | |
@Override | |
public void onPMessage(String pattern, String channel, String message) { | |
} | |
@Override | |
public void onMessage(String channel, String message) { | |
messageContainer.add(message); | |
log("Message received"); | |
messageReceivedLatch.countDown(); | |
} | |
}; | |
new Thread(new Runnable() { | |
@Override | |
public void run() { | |
try { | |
log("Connecting"); | |
Jedis jedis = new Jedis(JEDIS_SERVER); | |
log("subscribing"); | |
jedis.subscribe(jedisPubSub, "test"); | |
log("subscribe returned, closing down"); | |
jedis.quit(); | |
} catch (Exception e) { | |
log(">>> OH NOES Sub - " + e.getMessage()); | |
// e.printStackTrace(); | |
} | |
} | |
}, "subscriberThread").start(); | |
return jedisPubSub; | |
} | |
static final long startMillis = System.currentTimeMillis(); | |
private static void log(String string, Object... args) { | |
long millisSinceStart = System.currentTimeMillis() - startMillis; | |
System.out.printf("%20s %6d %s\n", Thread.currentThread().getName(), millisSinceStart, | |
String.format(string, args)); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
subscriberThread 5 Connecting | |
publisherThread 1 Connecting | |
publisherThread 40 Waiting to publish | |
publisherThread 41 Ready to publish, waiting one sec | |
subscriberThread 40 subscribing | |
subscriberThread 624 onSubscribe | |
publisherThread 1042 publishing | |
publisherThread 1048 published, closing publishing connection | |
subscriberThread 1049 Message received | |
main 1050 Got message: This is a message | |
publisherThread 1050 >>> OH NOES Pub, It seems like server has closed the connection. | |
subscriberThread 1051 onUnsubscribe | |
subscriberThread 1052 subscribe returned, closing down | |
subscriberThread 1053 >>> OH NOES Sub - It seems like server has closed the connection. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment