public class TcpTransporter extends Transporter
ServiceBroker broker = ServiceBroker.builder().nodeID("node1")
.transporter(new TcpTransporter()).build();
// *| Modifier and Type | Field and Description |
|---|---|
protected NodeDescriptor |
cachedDescriptor
Current node descriptor
|
protected byte[] |
cachedHelloMessage |
protected int |
currentPort
Current TCP port
|
protected java.util.concurrent.ScheduledFuture<?> |
gossiperTimer
Cancelable timer of gossiper
|
protected int |
gossipPeriod
Gossiping period time, in SECONDS.
|
protected UDPLocator |
locator
UDP broadcaster
|
protected int |
maxConnections
Max number of keep-alive connections (-1 = unlimited, 0 = disable
keep-alive connections).
|
protected int |
maxPacketSize
Max enable packet size (BYTES).
|
protected static byte |
PACKET_EVENT_ID |
protected static byte |
PACKET_GOSSIP_HELLO_ID |
protected static byte |
PACKET_GOSSIP_REQ_ID |
protected static byte |
PACKET_GOSSIP_RSP_ID |
protected static byte |
PACKET_PING_ID |
protected static byte |
PACKET_PONG_ID |
protected static byte |
PACKET_REQUEST_ID |
protected static byte |
PACKET_RESPONSE_ID |
protected int |
port
TCP port (used by the Transporter and Gossiper services).
|
protected TcpReader |
reader
Socket reader
|
protected java.util.Random |
rnd
Random generator.
|
protected java.lang.String |
startupHost
The local hostname specified in the "urls" parameter.
|
protected java.util.concurrent.atomic.AtomicLong |
timestamp
Current node descriptor's timestamp
|
protected java.lang.String |
udpBindAddress
UDP bind address (null = autodetect)
|
protected boolean |
udpBroadcast
Use UDP broadcast WITH UDP multicast (false = use UDP multicast only)
|
protected int |
udpMaxDiscovery
Maximum number of outgoing multicast packets (0 = runs forever)
|
protected java.lang.String |
udpMulticast
UDP multicast address of automatic discovery service.
|
protected int |
udpMulticastTTL
TTL of UDP multicast packets
|
protected int |
udpPeriod
UDP broadcast/multicast period in SECONDS
|
protected int |
udpPort
UDP broadcast/multicast port
|
protected boolean |
udpReuseAddr
Resuse addresses
|
protected java.lang.String[] |
urls
List of URLs ("tcp://host:port/nodeID" or "host:port/nodeID" or
"host/nodeID"), when UDP discovery is disabled.
|
protected boolean |
useHostname
Use hostnames instead of IP addresses As the DHCP environment is dynamic,
any later attempt to use IPs instead hostnames would most likely yield
false results.
|
protected TcpWriter |
writer
Socket writer
|
checkTimeoutTimer, counterTransporterPacketsReceivedBytes, counterTransporterPacketsReceivedTotal, counterTransporterPacketsSentBytes, counterTransporterPacketsSentTotal, debug, debugHeartbeats, disconnectChannel, discoverBroadcastChannel, discoverChannel, eventbus, eventChannel, executor, gaugeTransitConnected, heartbeatChannel, heartbeatInterval, heartbeatTimeout, heartBeatTimer, infoBroadcastChannel, infoChannel, infoScheduled, infoScheduledAt, instanceID, lastReceivedMessageAt, metrics, monitor, namespace, nodeID, nodes, offlineTimeout, PACKET_DISCONNECT, PACKET_DISCOVER, PACKET_EVENT, PACKET_HEARTBEAT, PACKET_INFO, PACKET_PING, PACKET_PONG, PACKET_REQUEST, PACKET_RESPONSE, pingChannel, pongChannel, preferHostname, prefix, protocolVersion, registry, requestChannel, responseChannel, scheduler, serializer, serviceInvoker, subscriptionTimeout, uidGenerator, usingJsonSerializerbroker, logger, nameMOLECULER_CACHER_CLEAN_TIME, MOLECULER_CACHER_CLEAN_TIME_DESC, MOLECULER_CACHER_CLEAN_TOTAL, MOLECULER_CACHER_CLEAN_TOTAL_DESC, MOLECULER_CACHER_DEL_TIME, MOLECULER_CACHER_DEL_TIME_DESC, MOLECULER_CACHER_DEL_TOTAL, MOLECULER_CACHER_DEL_TOTAL_DESC, MOLECULER_CACHER_EXPIRED_TOTAL, MOLECULER_CACHER_EXPIRED_TOTAL_DESC, MOLECULER_CACHER_FOUND_TOTAL, MOLECULER_CACHER_FOUND_TOTAL_DESC, MOLECULER_CACHER_GET_TIME, MOLECULER_CACHER_GET_TIME_DESC, MOLECULER_CACHER_GET_TOTAL, MOLECULER_CACHER_GET_TOTAL_DESC, MOLECULER_CACHER_SET_TIME, MOLECULER_CACHER_SET_TIME_DESC, MOLECULER_CACHER_SET_TOTAL, MOLECULER_CACHER_SET_TOTAL_DESC, MOLECULER_CIRCUIT_BREAKER_HALF_OPENED_ACTIVE, MOLECULER_CIRCUIT_BREAKER_HALF_OPENED_ACTIVE_DESC, MOLECULER_CIRCUIT_BREAKER_OPENED_ACTIVE, MOLECULER_CIRCUIT_BREAKER_OPENED_ACTIVE_DESC, MOLECULER_CIRCUIT_BREAKER_OPENED_TOTAL, MOLECULER_CIRCUIT_BREAKER_OPENED_TOTAL_DESC, MOLECULER_EVENT_BROADCAST_TOTAL, MOLECULER_EVENT_BROADCAST_TOTAL_DESC, MOLECULER_EVENT_BROADCASTLOCAL_TOTAL, MOLECULER_EVENT_BROADCASTLOCAL_TOTAL_DESC, MOLECULER_EVENT_EMIT_TOTAL, MOLECULER_EVENT_EMIT_TOTAL_DESC, MOLECULER_EVENT_RECEIVED_ACTIVE, MOLECULER_EVENT_RECEIVED_ACTIVE_DESC, MOLECULER_EVENT_RECEIVED_ERROR_TOTAL, MOLECULER_EVENT_RECEIVED_ERROR_TOTAL_DESC, MOLECULER_EVENT_RECEIVED_TIME, MOLECULER_EVENT_RECEIVED_TIME_DESC, MOLECULER_EVENT_RECEIVED_TOTAL, MOLECULER_EVENT_RECEIVED_TOTAL_DESC, MOLECULER_EXECUTOR, MOLECULER_REQUEST_ACTIVE, MOLECULER_REQUEST_ACTIVE_DESC, MOLECULER_REQUEST_ERROR_TOTAL, MOLECULER_REQUEST_ERROR_TOTAL_DESC, MOLECULER_REQUEST_LEVELS, MOLECULER_REQUEST_LEVELS_DESC, MOLECULER_REQUEST_RETRY_ATTEMPTS_TOTAL, MOLECULER_REQUEST_RETRY_ATTEMPTS_TOTAL_DESC, MOLECULER_REQUEST_TIME, MOLECULER_REQUEST_TIME_DESC, MOLECULER_REQUEST_TIMEOUT_TOTAL, MOLECULER_REQUEST_TIMEOUT_TOTAL_DESC, MOLECULER_REQUEST_TOTAL, MOLECULER_REQUEST_TOTAL_DESC, MOLECULER_SCHEDULER, MOLECULER_TRANSIT_CONNECTED, MOLECULER_TRANSIT_CONNECTED_DESC, MOLECULER_TRANSIT_ORPHAN_RESPONSE_TOTAL, MOLECULER_TRANSIT_ORPHAN_RESPONSE_TOTAL_DESC, MOLECULER_TRANSIT_REQUESTS_ACTIVE, MOLECULER_TRANSIT_REQUESTS_ACTIVE_DESC, MOLECULER_TRANSIT_STREAMS_RECEIVE_ACTIVE, MOLECULER_TRANSIT_STREAMS_RECEIVE_ACTIVE_DESC, MOLECULER_TRANSPORTER_PACKETS_RECEIVED_BYTES, MOLECULER_TRANSPORTER_PACKETS_RECEIVED_BYTES_DESC, MOLECULER_TRANSPORTER_PACKETS_RECEIVED_TOTAL, MOLECULER_TRANSPORTER_PACKETS_RECEIVED_TOTAL_DESC, MOLECULER_TRANSPORTER_PACKETS_SENT_BYTES, MOLECULER_TRANSPORTER_PACKETS_SENT_BYTES_DESC, MOLECULER_TRANSPORTER_PACKETS_SENT_TOTAL, MOLECULER_TRANSPORTER_PACKETS_SENT_TOTAL_DESC| Constructor and Description |
|---|
TcpTransporter()
Start TCP Transporter in "zero config" mode, with automatic UDP service
discovery.
|
TcpTransporter(java.lang.String... urls)
Start TCP Transporter in full TCP mode, without UDP discovery.
|
TcpTransporter(java.net.URL urlList)
Start TCP Transporter in full TCP mode, without UDP discovery.
|
| Modifier and Type | Method and Description |
|---|---|
void |
broadcastInfoPacket() |
void |
connect() |
protected void |
disconnect() |
byte[] |
generateGossipHello()
Create Gossip HELLO packet.
|
int |
getCurrentPort() |
NodeDescriptor |
getDescriptor() |
int |
getGossipPeriod() |
int |
getMaxConnections() |
int |
getMaxPacketSize() |
int |
getPort() |
java.lang.String |
getUdpBindAddress() |
int |
getUdpMaxDiscovery() |
java.lang.String |
getUdpMulticast() |
int |
getUdpMulticastTTL() |
int |
getUdpPeriod() |
int |
getUdpPort() |
java.lang.String[] |
getUrls() |
boolean |
isUdpBroadcast() |
boolean |
isUdpReuseAddr() |
boolean |
isUseHostname() |
protected void |
processGossipHello(io.datatree.Tree data) |
protected io.datatree.Tree |
processGossipRequest(io.datatree.Tree data) |
protected void |
processGossipResponse(io.datatree.Tree data) |
void |
publish(java.lang.String channel,
io.datatree.Tree message) |
void |
received(byte packetID,
byte[] packet) |
protected void |
reconnect() |
protected void |
registerAsNewNode(java.lang.String sender,
java.lang.String host,
int port) |
protected void |
sendDisconnectPacket() |
protected io.datatree.Tree |
sendGossipRequest()
Create and send a Gossip request packet.
|
protected void |
sendGossipToRandomEndpoint(java.lang.String[] endpoints,
int size,
byte[] packet,
io.datatree.Tree message) |
protected byte[] |
serialize(byte packetID,
io.datatree.Tree message) |
void |
setGossipPeriod(int gossipPeriod) |
void |
setHeartbeatInterval(int heartbeatInterval) |
void |
setHeartbeatTimeout(int heartbeatTimeout) |
void |
setMaxConnections(int maxConnections) |
void |
setMaxPacketSize(int maxPacketSize) |
void |
setPort(int port) |
void |
setUdpBindAddress(java.lang.String udpBindAddress) |
void |
setUdpBroadcast(boolean udpBroadcast) |
void |
setUdpMaxDiscovery(int udpMaxDiscovery) |
void |
setUdpMulticast(java.lang.String udpMulticast) |
void |
setUdpMulticastTTL(int udpMulticastTTL) |
void |
setUdpPeriod(int udpPeriod) |
void |
setUdpPort(int udpPort) |
void |
setUdpReuseAddr(boolean udpReuseAddr) |
void |
setUrls(java.lang.String... urls) |
void |
setUseHostname(boolean preferHostname) |
void |
stopped()
Closes TCP Transporter.
|
io.datatree.Promise |
subscribe(java.lang.String channel) |
void |
udpPacketReceived(java.lang.String sender,
java.lang.String host,
int port) |
void |
unableToSend(java.lang.String nodeID,
java.util.LinkedList<byte[]> packets,
java.lang.Throwable cause) |
broadcastNodeConnected, broadcastNodeDisconnected, broadcastNodeUpdated, broadcastTransporterConnected, broadcastTransporterDisconnected, channel, checkTimeouts, connected, connected, createPingPacket, error, getAddress, getAllNodeIDs, getCpuUsage, getDescriptor, getHeartbeatInterval, getHeartbeatTimeout, getInstanceID, getLastHeartbeatTime, getNamespace, getOfflineTimeout, getPrefix, getSerializer, getSubscriptionTimeout, isDebug, isDebugHeartbeats, isOnline, isPreferHostname, processReceivedMessage, processReceivedMessage, publish, received, scheduleInfoPacket, sendClosePacket, sendDataPacket, sendDiscoverPacket, sendErrorPacket, sendEventPacket, sendHeartbeatPacket, sendInfoPacket, sendPongPacket, sendRequestPacket, setDebug, setDebugHeartbeats, setNamespace, setOfflineTimeout, setPreferHostname, setPrefix, setSerializer, setSubscriptionTimeout, started, subscribe, updateNodeInfogetBroker, getLogger, getNameprotected static final byte PACKET_EVENT_ID
protected static final byte PACKET_REQUEST_ID
protected static final byte PACKET_RESPONSE_ID
protected static final byte PACKET_PING_ID
protected static final byte PACKET_PONG_ID
protected static final byte PACKET_GOSSIP_REQ_ID
protected static final byte PACKET_GOSSIP_RSP_ID
protected static final byte PACKET_GOSSIP_HELLO_ID
protected int port
protected int gossipPeriod
protected int maxConnections
protected int maxPacketSize
protected java.lang.String[] urls
protected boolean useHostname
protected int udpPort
protected java.lang.String udpBindAddress
protected int udpPeriod
protected boolean udpReuseAddr
protected int udpMaxDiscovery
protected java.lang.String udpMulticast
protected int udpMulticastTTL
protected boolean udpBroadcast
protected final java.util.Random rnd
protected volatile java.util.concurrent.ScheduledFuture<?> gossiperTimer
protected TcpReader reader
protected TcpWriter writer
protected UDPLocator locator
protected int currentPort
protected java.lang.String startupHost
protected NodeDescriptor cachedDescriptor
protected java.util.concurrent.atomic.AtomicLong timestamp
protected byte[] cachedHelloMessage
public TcpTransporter()
public TcpTransporter(java.lang.String... urls)
urls - list of urls of ALL nodespublic TcpTransporter(java.net.URL urlList)
throws java.lang.Exception
urlList - an URL, where the peer configuration's JSON is locatedjava.lang.Exception - URL format exception or any I/O errorpublic void connect()
connect in class Transporterprotected void disconnect()
protected void reconnect()
public void stopped()
stopped in interface MoleculerLifecyclestopped in class Transporterpublic void received(byte packetID,
byte[] packet)
public void unableToSend(java.lang.String nodeID,
java.util.LinkedList<byte[]> packets,
java.lang.Throwable cause)
protected void sendDisconnectPacket()
sendDisconnectPacket in class Transporterpublic io.datatree.Promise subscribe(java.lang.String channel)
subscribe in class Transporterpublic void publish(java.lang.String channel,
io.datatree.Tree message)
publish in class Transporterprotected byte[] serialize(byte packetID,
io.datatree.Tree message)
throws java.lang.Exception
java.lang.Exceptionpublic NodeDescriptor getDescriptor()
public void udpPacketReceived(java.lang.String sender,
java.lang.String host,
int port)
protected void processGossipHello(io.datatree.Tree data)
protected void registerAsNewNode(java.lang.String sender,
java.lang.String host,
int port)
protected io.datatree.Tree sendGossipRequest()
protected void sendGossipToRandomEndpoint(java.lang.String[] endpoints,
int size,
byte[] packet,
io.datatree.Tree message)
throws java.lang.Exception
java.lang.Exceptionprotected io.datatree.Tree processGossipRequest(io.datatree.Tree data)
throws java.lang.Exception
java.lang.Exceptionprotected void processGossipResponse(io.datatree.Tree data)
throws java.lang.Exception
java.lang.Exceptionpublic byte[] generateGossipHello()
public void broadcastInfoPacket()
broadcastInfoPacket in class Transporterpublic void setHeartbeatInterval(int heartbeatInterval)
setHeartbeatInterval in class Transporterpublic void setHeartbeatTimeout(int heartbeatTimeout)
setHeartbeatTimeout in class Transporterpublic java.lang.String[] getUrls()
public void setUrls(java.lang.String... urls)
public int getPort()
public void setPort(int port)
public int getGossipPeriod()
public void setGossipPeriod(int gossipPeriod)
public int getMaxConnections()
public void setMaxConnections(int maxConnections)
public int getMaxPacketSize()
public void setMaxPacketSize(int maxPacketSize)
public int getCurrentPort()
public boolean isUseHostname()
public void setUseHostname(boolean preferHostname)
public boolean isUdpBroadcast()
public void setUdpBroadcast(boolean udpBroadcast)
public int getUdpMaxDiscovery()
public void setUdpMaxDiscovery(int udpMaxDiscovery)
public int getUdpPeriod()
public void setUdpPeriod(int udpPeriod)
public boolean isUdpReuseAddr()
public void setUdpReuseAddr(boolean udpReuseAddr)
public int getUdpPort()
public void setUdpPort(int udpPort)
public java.lang.String getUdpBindAddress()
public void setUdpBindAddress(java.lang.String udpBindAddress)
public java.lang.String getUdpMulticast()
public void setUdpMulticast(java.lang.String udpMulticast)
public int getUdpMulticastTTL()
public void setUdpMulticastTTL(int udpMulticastTTL)