public class ClusteredServer extends DefaultServer
Server implementation for clustering.
With this implementation, server.all(action) have action be executed with
every socket in every server in the cluster.
This implementation adopts the publish and subscribe model from Java Message Service to
support clustering. Here, the exchanged message represents method invocation to be executed by
every server in the cluster. The following methods create such messages.
Server.all()Server.all(Action)Server.byTag(String...)Server.byTag(String, Action)Server.byTag(String[], Action)onpublish(Action) and a
message created by other servers is expected to be passed to
messageAction(). Therefore, what you need to do is to publish a
message given through onpublish(Action) to every server in the cluster
and to subscribe a published message by other servers to delegate it to
messageAction().
Accordingly, such message must be able to be serialized and you have to pass
Action implementing Serializable. However, serialization of inner classes
doesn't work in some cases as expected so that always use Sentence instead of action
if possible unless you use lambda expressions.| Constructor and Description |
|---|
ClusteredServer() |
| Modifier and Type | Method and Description |
|---|---|
Server |
all(Action<ServerSocket> action)
Executes the given action retrieving every socket in this server.
|
Server |
byTag(String[] names,
Action<ServerSocket> action)
Executes the given action retrieving the socket tagged with the given tags in this server.
|
Action<Map<String,Object>> |
messageAction()
An action to receive a message published from one of nodes in the cluster.
|
Server |
onpublish(Action<Map<String,Object>> action)
Adds an action to be called with a message to be published to every node in the cluster.
|
all, byTag, byTag, on, onsocket, set_heartbeat, setHeartbeatpublic Server all(Action<ServerSocket> action)
Serverall in interface Serverall in class DefaultServerpublic Server byTag(String[] names, Action<ServerSocket> action)
ServerbyTag in interface ServerbyTag in class DefaultServerpublic Server onpublish(Action<Map<String,Object>> action)
Copyright 2015, The Cettia Project