package ddth.dasp.test.hazelcast;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import ddth.dasp.common.hazelcastex.IHazelcastClient;
import ddth.dasp.common.hazelcastex.IHazelcastClientFactory;
import ddth.dasp.common.hazelcastex.impl.AbstractMessageListener;
import ddth.dasp.common.hazelcastex.impl.HazelcastClientFactory;
public class TestHazelcastClient {
private static class MyMessageListener extends AbstractMessageListener<String> {
private int counter = 0;
public MyMessageListener(String topicName, IHazelcastClient hazelcastClient) {
super(topicName, hazelcastClient);
}
@Override
public void onMessage(String message) {
counter++;
System.out.println("Received: " + "[" + counter + "/" + message + "/"
+ message.getClass() + "]");
if (counter > 3) {
unsubscribe();
}
}
}
public static void main(String[] args) throws InterruptedException {
final String TOPIC = "_TOPIC_";
final String hazelcastUsername = "DzitAppServer";
final String hazelcastPassword = "h2z3lc2st";
final List<String> hazelcastServers = new ArrayList<String>();
hazelcastServers.add("localhost:8700");
final IHazelcastClientFactory hazelcastClientFactory = new HazelcastClientFactory();
hazelcastClientFactory.init();
Thread[] threads = new Thread[4];
for (int i = 0; i < threads.length; i++) {
threads[i] = new Thread() {
public void run() {
for (int i = 0; i < 100; i++) {
IHazelcastClient hazelcastClient = hazelcastClientFactory
.getHazelcastClient(hazelcastServers, hazelcastUsername,
hazelcastPassword);
try {
System.out.println(hazelcastClient + ": " + hazelcastClient.ping()
+ ":"
+ hazelcastClient.queuePoll("_QUEUE_", 3, TimeUnit.SECONDS));
} finally {
hazelcastClientFactory.returnHazelcastClient(hazelcastClient);
}
}
}
};
}
for (int i = 0; i < threads.length; i++) {
threads[i].start();
}
for (int i = 0; i < threads.length; i++) {
threads[i].join();
}
// {
// for (int i = 0; i < 100; i++) {
// IHazelcastClient hazelcastClient =
// hazelcastClientFactory.getHazelcastClient(
// hazelcastServers, hazelcastUsername, hazelcastPassword);
// System.out.println(hazelcastClient + ": " + hazelcastClient.ping() +
// ":"
// + hazelcastClient.queuePoll("_QUEUE_"));
// hazelcastClientFactory.returnHazelcastClient(hazelcastClient);
// }
// }
System.exit(0);
IHazelcastClient hazelcastClient = hazelcastClientFactory.getHazelcastClient(
hazelcastServers, hazelcastUsername, hazelcastPassword);
hazelcastClient.subscribe(TOPIC, new MyMessageListener(TOPIC, hazelcastClient));
for (int i = 0; i < 10; i++) {
Object value = i % 2 == 0 ? String.valueOf(i) : i;
hazelcastClient.publish(TOPIC, value);
System.out.println("Published: " + value);
Thread.sleep(1000);
}
hazelcastClientFactory.returnHazelcastClient(hazelcastClient);
hazelcastClientFactory.destroy();
}
}