Class DistributedTopic<T>

java.lang.Object
com.loomcache.server.datastructures.DistributedTopic<T>
Type Parameters:
T - the type of messages published

public class DistributedTopic<T> extends Object
Distributed Topic — pub/sub messaging between nodes and clients.

Publishers send messages to a named topic; all subscribers on all nodes receive the message. In a cluster, published messages are broadcast to all nodes via the message protocol (TOPIC_PUBLISH / TOPIC_EVENT).

Features:

  • publish: send a message to all subscribers
  • publishAsync: non-blocking publish using virtual threads
  • subscribe: register a listener for messages
  • subscribeWithFilter: register a filtered listener for messages
  • unsubscribe: deregister a listener
  • Message ordering guaranteed per publisher
  • Pause/resume message delivery
  • Statistics: total published, total delivered, filtered messages, etc.
Since:
1.0
See Also:
  • Constructor Details

    • DistributedTopic

      public DistributedTopic(String name, int instanceNumber)
    • DistributedTopic

      public DistributedTopic(String name, int instanceNumber, boolean multiThreadingEnabled)
    • DistributedTopic

      public DistributedTopic(String name, int instanceNumber, boolean multiThreadingEnabled, boolean globalOrderingEnabled)
  • Method Details

    • publish

      public void publish(T message)
    • publish

      public void publish(T message, String publisherId)
    • deliverRemote

      public void deliverRemote(T message, String publisherId)
    • subscribe

      public String subscribe(DistributedTopic.MessageListener<T> listener)
    • unsubscribe

      public boolean unsubscribe(DistributedTopic.MessageListener<T> listener)
    • unsubscribe

      public boolean unsubscribe(String subscriptionId)
    • subscriberCount

      public int subscriberCount()
    • addSubscriberWithFilter

      public String addSubscriberWithFilter(DistributedTopic.MessageListener<T> subscriber, Predicate<T> filter)
    • removeFilteredSubscriber

      public boolean removeFilteredSubscriber(DistributedTopic.MessageListener<T> subscriber)
    • getTotalPublished

      public long getTotalPublished()
    • getTotalDelivered

      public long getTotalDelivered()
    • getListenerFailures

      public long getListenerFailures()
    • publishAsync

      public CompletableFuture<Void> publishAsync(T message)
    • getSubscriberCount

      public int getSubscriberCount()
    • getMessageCount

      public long getMessageCount()
    • pauseDelivery

      public void pauseDelivery()
    • resumeDelivery

      public void resumeDelivery()
    • getTopicStatistics

      public DistributedTopic.TopicStatistics getTopicStatistics()