Şu satırı dahil ederiz
import com.hazelcast.topic.ITopic;
Publish/Subscribe yöntemi sağlar. Yayınlanan mesajı tüm aboneler alırlar
constructor - Reliable Topic
Örnek
Şöyle yaparız
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
ITopic<Long> topic = hz.getReliableTopic("sometopic");
long messageId = ...;
topic.publish(messageId);
addMessageListener metodu
Örnek
Publisher için şöyle yaparız
public class Trader {
private HazelcastInstance hazelcast;
private ITopic<TradeMessage> tradeTopic;
public Trader() {
hazelcast = Hazelcast.newHazelcastInstance();
tradeTopic = hazelcast.getTopic("trades");
}
public void trade(String symbol, int quantity, double price) {
TradeMessage trade = new TradeMessage(symbol, quantity, price);
tradeTopic.publish(trade);
}
}
Listener için şöyle yaparız. Listener hem member hem de client tarafında takılabilir.
public class TradeListener implements MessageListener<TradeMessage> {
private HazelcastInstance hazelcast;
private ITopic<TradeMessage> tradeTopic;
public TradeListener() {
hazelcast = Hazelcast.newHazelcastInstance();
tradeTopic = hazelcast.getTopic("trades");
tradeTopic.addMessageListener(this);
}
public void onMessage(Message<TradeMessage> message) {
TradeMessage trade = message.getMessageObject();
}
}
Takılan her bir MessageListener nenesi için MessageRunner sınıfından kalıtan
ReliableMessageRunner veya
ClientReliableMessageRunner
yaratılır
MessageRunner belirtilen ringBuffer nesnesinden okuma işlemi başlatır. İşlemin sonucunu kendisine dışarıdan verilen Executor üzerinde çalıştırır
publish metodu
Örnek
Şöyle yaparız
ITopic topic = ...;
topic.publish(objectToStore);
removeMessageListener
Örnek
Şöyle yaparız
HazelcastInstance hazelcastInstance = ...;
ITopic topic = hazelcastInstance.getReliableTopic("topic_name");
String listenerId = topic.addMessageListener(new TopicListener());
topic.removeMessageListener(listenerId);
Şöyle yaparız
class TopicListener implements MessageListener {
@Override
public void onMessage(Message message) {}
}
Hiç yorum yok:
Yorum Gönder