Interface ClusterCommunicationService

All Known Subinterfaces:
ManagedClusterCommunicationService
All Known Implementing Classes:
DefaultClusterCommunicationService

public interface ClusterCommunicationService
High-level MemberId based intra-cluster messaging service.

The cluster communication service is used for high-level communication between cluster members. Messages are sent and received based on arbitrary String message subjects. Direct messages are sent using the MemberId to which to send the message. This API supports several types of messaging:

To register to listen for messages, use one of the subscribe(String, Function, Consumer, Executor) methods:

 service.subscribe("test", String::new, message -> {
   System.out.println("Received message " + message);
 }, executor);

 
  • Method Details

    • broadcast

      <M> void broadcast(String subject, M message, Function<M,byte[]> encoder, boolean reliable)
      Broadcasts a message to all members.
      Type Parameters:
      M - message type
      Parameters:
      subject - message subject
      message - message to send
      encoder - function for encoding message to byte[]
      reliable - whether to perform a reliable (TCP) unicast
    • multicast

      <M> void multicast(String subject, M message, Function<M,byte[]> encoder, Set<MemberId> memberIds, boolean reliable)
      Multicasts a message to a set of members.
      Type Parameters:
      M - message type
      Parameters:
      subject - message subject
      message - message to send
      encoder - function for encoding message to byte[]
      memberIds - recipient node identifiers
      reliable - whether to perform a reliable (TCP) unicast
    • unicast

      <M> void unicast(String subject, M message, Function<M,byte[]> encoder, MemberId memberId, boolean reliable)
      Sends a message to a member.
      Type Parameters:
      M - message type
      Parameters:
      subject - message subject
      message - message to send
      encoder - function for encoding message to byte[]
      memberId - recipient node identifier
      reliable - whether to perform a reliable (TCP) unicast
    • send

      <M, R> CompletableFuture<R> send(String subject, M message, Function<M,byte[]> encoder, Function<byte[],R> decoder, MemberId toMemberId, Duration timeout)
      Sends a message and expects a reply.
      Type Parameters:
      M - request type
      R - reply type
      Parameters:
      subject - message subject
      message - message to send
      encoder - function for encoding request to byte[]
      decoder - function for decoding response from byte[]
      toMemberId - recipient node identifier
      timeout - response timeout
      Returns:
      reply future
    • subscribe

      <M, R> void subscribe(String subject, Function<byte[],M> decoder, Function<M,R> handler, Function<R,byte[]> encoder, Executor executor)
      Adds a new subscriber for the specified message subject.
      Type Parameters:
      M - incoming message type
      R - reply message type
      Parameters:
      subject - message subject
      decoder - decoder for resurrecting incoming message
      handler - handler function that processes the incoming message and produces a reply
      encoder - encoder for serializing reply
      executor - executor to run this handler on
    • subscribe

      <M, R> void subscribe(String subject, Function<byte[],M> decoder, Function<M,CompletableFuture<R>> handler, Function<R,byte[]> encoder)
      Adds a new subscriber for the specified message subject.
      Type Parameters:
      M - incoming message type
      R - reply message type
      Parameters:
      subject - message subject
      decoder - decoder for resurrecting incoming message
      handler - handler function that processes the incoming message and produces a reply
      encoder - encoder for serializing reply
    • subscribe

      <M> void subscribe(String subject, Function<byte[],M> decoder, Consumer<M> handler, Executor executor)
      Adds a new subscriber for the specified message subject.
      Type Parameters:
      M - incoming message type
      Parameters:
      subject - message subject
      decoder - decoder to resurrecting incoming message
      handler - handler for handling message
      executor - executor to run this handler on
    • subscribe

      <M> void subscribe(String subject, Function<byte[],M> decoder, BiConsumer<MemberId,M> handler, Executor executor)
      Adds a new subscriber for the specified message subject.
      Type Parameters:
      M - incoming message type
      Parameters:
      subject - message subject
      decoder - decoder to resurrecting incoming message
      handler - handler for handling message
      executor - executor to run this handler on
    • unsubscribe

      void unsubscribe(String subject)
      Removes a subscriber for the specified message subject.
      Parameters:
      subject - message subject