Class DefaultClusterCommunicationService

java.lang.Object
io.atomix.cluster.messaging.impl.DefaultClusterCommunicationService
All Implemented Interfaces:
ClusterCommunicationService, ManagedClusterCommunicationService, Managed<ClusterCommunicationService>, AutoCloseable

public class DefaultClusterCommunicationService extends Object implements ManagedClusterCommunicationService
Cluster communication service implementation.
  • Field Details

  • Constructor Details

  • Method Details

    • broadcast

      public <M> void broadcast(String subject, M message, Function<M,byte[]> encoder, boolean reliable)
      Description copied from interface: ClusterCommunicationService
      Broadcasts a message to all members.
      Specified by:
      broadcast in interface ClusterCommunicationService
      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 or not (UDP)
    • multicast

      public <M> void multicast(String subject, M message, Function<M,byte[]> encoder, Set<MemberId> nodes, boolean reliable)
      Description copied from interface: ClusterCommunicationService
      Multicasts a message to a set of members.
      Specified by:
      multicast in interface ClusterCommunicationService
      Type Parameters:
      M - message type
      Parameters:
      subject - message subject
      message - message to send
      encoder - function for encoding message to byte[]
      nodes - recipient node identifiers
      reliable - whether to perform a reliable (TCP) unicast or not (UDP)
    • unicast

      public <M> void unicast(String subject, M message, Function<M,byte[]> encoder, MemberId memberId, boolean reliable)
      Description copied from interface: ClusterCommunicationService
      Sends a message to a member.
      Specified by:
      unicast in interface ClusterCommunicationService
      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 or not (UDP)
    • send

      public <M, R> CompletableFuture<R> send(String subject, M message, Function<M,byte[]> encoder, Function<byte[],R> decoder, MemberId toMemberId, Duration timeout)
      Description copied from interface: ClusterCommunicationService
      Sends a message and expects a reply.

      The returned future may be completed exceptionally with any exceptions listed by MessagingService.sendAndReceive(Address, String, byte[], boolean, Duration, Executor), as well as:

      Specified by:
      send in interface ClusterCommunicationService
      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
    • replyTo

      public <M, R> void replyTo(String subject, Function<byte[],M> decoder, Function<M,CompletableFuture<R>> handler, Function<R,byte[]> encoder)
      Description copied from interface: ClusterCommunicationService
      Adds a new subscriber for the specified message subject, which must return a reply.
      Specified by:
      replyTo in interface ClusterCommunicationService
      Type Parameters:
      M - incoming message type
      R - reply message type
      Parameters:
      subject - message subject
      decoder - decoder for deserialize incoming message
      handler - handler function that processes the incoming message and produces a reply
      encoder - encoder for serializing reply
    • consume

      public <M> void consume(String subject, Function<byte[],M> decoder, Consumer<M> handler, Executor executor)
      Description copied from interface: ClusterCommunicationService
      Adds a new subscriber for the specified message subject which does not return any reply.
      Specified by:
      consume in interface ClusterCommunicationService
      Type Parameters:
      M - incoming message type
      Parameters:
      subject - message subject
      decoder - decoder to deserialize incoming message
      handler - handler for handling message
      executor - executor to run this handler on
    • consume

      public <M> void consume(String subject, Function<byte[],M> decoder, BiConsumer<MemberId,M> handler, Executor executor)
      Description copied from interface: ClusterCommunicationService
      Adds a new subscriber for the specified message subject which does not return any reply. If the sender is not a known member, the handler is not called (but no error is returned to the sender).
      Specified by:
      consume in interface ClusterCommunicationService
      Type Parameters:
      M - incoming message type
      Parameters:
      subject - message subject
      decoder - decoder to deserialize incoming message
      handler - handler for handling message, receiving the sender's member ID and the decoded message
      executor - executor to run this handler on
    • replyTo

      public <M, R> void replyTo(String subject, Function<byte[],M> decoder, BiFunction<MemberId,M,R> handler, Function<R,byte[]> encoder, Executor executor)
      Description copied from interface: ClusterCommunicationService
      Adds a new subscriber for the specified message subject which must return a reply. If the sender is not a known member, the handler is not called, and a MessagingException.NoSuchMemberException is returned to the sender.
      Specified by:
      replyTo in interface ClusterCommunicationService
      Type Parameters:
      M - incoming message type
      Parameters:
      subject - message subject
      decoder - decoder to deserializing incoming message
      handler - handler for handling message, receiving the sender's member ID and the decoded message
      encoder - to serialize the outgoing reply
      executor - executor to run this handler on
    • replyToAsync

      public <M, R> void replyToAsync(String subject, Function<byte[],M> decoder, Function<M,CompletableFuture<R>> handler, Function<R,byte[]> encoder, Executor executor)
      Description copied from interface: ClusterCommunicationService
      Adds a new subscriber for the specified message subject which must return a reply. If the sender is not a known member, the handler is not called, and a MessagingException.NoSuchMemberException is returned to the sender.
      Specified by:
      replyToAsync in interface ClusterCommunicationService
      Type Parameters:
      M - incoming message type
      Parameters:
      subject - message subject
      decoder - decoder to deserializing incoming message
      handler - handler receives the decoded message and returns a future which is completed with the reply (which will be encoded using the given encoder)
      encoder - to serialize the outgoing reply
      executor - executor to run this handler on
    • unsubscribe

      public void unsubscribe(String subject)
      Description copied from interface: ClusterCommunicationService
      Removes a subscriber for the specified message subject.
      Specified by:
      unsubscribe in interface ClusterCommunicationService
      Parameters:
      subject - message subject
    • start

      Specified by:
      start in interface Managed<ClusterCommunicationService>
    • isRunning

      public boolean isRunning()
      Specified by:
      isRunning in interface Managed<ClusterCommunicationService>
    • stop

      public CompletableFuture<Void> stop()
      Specified by:
      stop in interface Managed<ClusterCommunicationService>