Package io.atomix.cluster.messaging
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:
broadcast(String, Object, Function, boolean)broadcasts a message to all cluster membersmulticast(String, Object, Function, Set, boolean)sends the message to all provided membersunicast(String, Object, Function, MemberId, boolean)sends a unicast message directly to the given membersend(String, Object, Function, Function, MemberId, Duration)sends a message directly to the given member and awaits a reply
subscribe(String, Function, Consumer, Executor) methods:
service.subscribe("test", String::new, message -> {
System.out.println("Received message " + message);
}, executor);
-
Method Summary
Modifier and TypeMethodDescription<M> voidBroadcasts a message to all members.<M> voidmulticast(String subject, M message, Function<M, byte[]> encoder, Set<MemberId> memberIds, boolean reliable) Multicasts a message to a set of members.<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.<M> voidsubscribe(String subject, Function<byte[], M> decoder, BiConsumer<MemberId, M> handler, Executor executor) Adds a new subscriber for the specified message subject.<M> voidAdds a new subscriber for the specified message subject.<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.<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.<M> voidSends a message to a member.voidunsubscribe(String subject) Removes a subscriber for the specified message subject.
-
Method Details
-
broadcast
Broadcasts a message to all members.- Type Parameters:
M- message type- Parameters:
subject- message subjectmessage- message to sendencoder- 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 subjectmessage- message to sendencoder- function for encoding message to byte[]memberIds- recipient node identifiersreliable- 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 subjectmessage- message to sendencoder- function for encoding message to byte[]memberId- recipient node identifierreliable- 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 typeR- reply type- Parameters:
subject- message subjectmessage- message to sendencoder- function for encoding request to byte[]decoder- function for decoding response from byte[]toMemberId- recipient node identifiertimeout- 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 typeR- reply message type- Parameters:
subject- message subjectdecoder- decoder for resurrecting incoming messagehandler- handler function that processes the incoming message and produces a replyencoder- encoder for serializing replyexecutor- 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 typeR- reply message type- Parameters:
subject- message subjectdecoder- decoder for resurrecting incoming messagehandler- handler function that processes the incoming message and produces a replyencoder- 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 subjectdecoder- decoder to resurrecting incoming messagehandler- handler for handling messageexecutor- 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 subjectdecoder- decoder to resurrecting incoming messagehandler- handler for handling messageexecutor- executor to run this handler on
-
unsubscribe
Removes a subscriber for the specified message subject.- Parameters:
subject- message subject
-