Class MulticastSeedNodeProvider
- java.lang.Object
-
- io.hekate.cluster.seed.multicast.MulticastSeedNodeProvider
-
- All Implemented Interfaces:
SeedNodeProvider
,JmxSupport<MulticastSeedNodeProviderJmx>
,ConfigReportSupport
public class MulticastSeedNodeProvider extends Object implements SeedNodeProvider, JmxSupport<MulticastSeedNodeProviderJmx>, ConfigReportSupport
Multicast-based seed node provider.This provider uses IP multicast to discover seed nodes. When this provider starts it periodically sends multicast messages and awaits for responses from other nodes (up to a configurable timeout).
Configuration of this provider is represented by the
MulticastSeedNodeProviderConfig
class. Please see its documentation for information about available configuration options.
-
-
Constructor Summary
Constructors Constructor Description MulticastSeedNodeProvider()
Constructs a new instance with all configuration options set to their default values (seeMulticastSeedNodeProviderConfig
).MulticastSeedNodeProvider(MulticastSeedNodeProviderConfig cfg)
Constructs a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
cleanupInterval()
Returns the time interval in milliseconds for the cluster service to perform the stale data cleaning.List<InetSocketAddress>
findSeedNodes(String namespace)
Returns the list of known seed node addresses.InetSocketAddress
group()
Returns the multicast group (seeMulticastSeedNodeProviderConfig.setGroup(String)
).long
interval()
Returns the multicast interval (seeMulticastSeedNodeProviderConfig.setInterval(long)
).boolean
isLoopBackDisabled()
Returnstrue
if receiving of multicast messages on the loopback address is disabled (seeMulticastSeedNodeProviderConfig.setLoopBackDisabled(boolean)
).MulticastSeedNodeProviderJmx
jmx()
Creates a JMX object.void
registerRemote(String namespace, InetSocketAddress node)
Registered the specified addresses within this provider.void
report(ConfigReporter report)
Report configuration.void
startDiscovery(String namespace, InetSocketAddress address)
Registers the local node address and starts this provider.void
stopDiscovery(String namespace, InetSocketAddress address)
Unregisters the local node address and stops this provider.void
suspendDiscovery()
Suspends discovery activities.String
toString()
int
ttl()
Returns the multicast TTL (seeMulticastSeedNodeProviderConfig.setTtl(int)
).void
unregisterRemote(String namespace, InetSocketAddress node)
Unregisters the specified address from this provider.long
waitTime()
Returns the time to await for responses from remote nodes (seeMulticastSeedNodeProviderConfig.setWaitTime(long)
).
-
-
-
Constructor Detail
-
MulticastSeedNodeProvider
public MulticastSeedNodeProvider() throws UnknownHostException
Constructs a new instance with all configuration options set to their default values (seeMulticastSeedNodeProviderConfig
).- Throws:
UnknownHostException
- If failed to resolve multicast group address.
-
MulticastSeedNodeProvider
public MulticastSeedNodeProvider(MulticastSeedNodeProviderConfig cfg) throws UnknownHostException
Constructs a new instance.- Parameters:
cfg
- Configuration.- Throws:
UnknownHostException
- If failed to resolve multicast group address.
-
-
Method Detail
-
report
public void report(ConfigReporter report)
Description copied from interface:ConfigReportSupport
Report configuration.- Specified by:
report
in interfaceConfigReportSupport
- Parameters:
report
- Reporter.
-
findSeedNodes
public List<InetSocketAddress> findSeedNodes(String namespace) throws HekateException
Description copied from interface:SeedNodeProvider
Returns the list of known seed node addresses.- Specified by:
findSeedNodes
in interfaceSeedNodeProvider
- Parameters:
namespace
- Cluster namespace (seeClusterServiceFactory.setNamespace(String)
).- Returns:
- List of known seed node addresses.
- Throws:
HekateException
- if failed to provide seed node addresses information due to the system failure.
-
startDiscovery
public void startDiscovery(String namespace, InetSocketAddress address) throws HekateException
Description copied from interface:SeedNodeProvider
Registers the local node address and starts this provider.- Specified by:
startDiscovery
in interfaceSeedNodeProvider
- Parameters:
namespace
- Cluster namespace (seeClusterServiceFactory.setNamespace(String)
).address
- Local node address.- Throws:
HekateException
- If failed to start discovery due to the system failure.
-
suspendDiscovery
public void suspendDiscovery()
Description copied from interface:SeedNodeProvider
Suspends discovery activities.- Specified by:
suspendDiscovery
in interfaceSeedNodeProvider
-
stopDiscovery
public void stopDiscovery(String namespace, InetSocketAddress address) throws HekateException
Description copied from interface:SeedNodeProvider
Unregisters the local node address and stops this provider.- Specified by:
stopDiscovery
in interfaceSeedNodeProvider
- Parameters:
namespace
- Cluster namespace (seeClusterServiceFactory.setNamespace(String)
).address
- Local node address.- Throws:
HekateException
- If failed to stop discovery due to the system failure.
-
cleanupInterval
public long cleanupInterval()
Description copied from interface:SeedNodeProvider
Returns the time interval in milliseconds for the cluster service to perform the stale data cleaning. If the returned value if less than or equals to zero then stale data cleaning will be disabled.- Specified by:
cleanupInterval
in interfaceSeedNodeProvider
- Returns:
- Time interval in milliseconds.
-
registerRemote
public void registerRemote(String namespace, InetSocketAddress node) throws HekateException
Description copied from interface:SeedNodeProvider
Registered the specified addresses within this provider.This method is the part of a stale data cleanup activity and is performed by the cluster service if it detects that particular node is within its cluster topology but is not registered within this provider (i.e. not returned from
SeedNodeProvider.findSeedNodes(String)
method).- Specified by:
registerRemote
in interfaceSeedNodeProvider
- Parameters:
namespace
- Cluster namespace (seeClusterServiceFactory.setNamespace(String)
).node
- Node address that should be registered.- Throws:
HekateException
- If node couldn't be registered due to the system failure.
-
unregisterRemote
public void unregisterRemote(String namespace, InetSocketAddress node) throws HekateException
Description copied from interface:SeedNodeProvider
Unregisters the specified address from this provider.This method is the part of a stale data cleanup activity and is called by the cluster service if it detects that there is no cluster node running at the specified address while this address is still registered within this provider (i.e. is returned from
SeedNodeProvider.findSeedNodes(String)
method).- Specified by:
unregisterRemote
in interfaceSeedNodeProvider
- Parameters:
namespace
- Cluster namespace (seeClusterServiceFactory.setNamespace(String)
).node
- Node address that should be unregistered.- Throws:
HekateException
- If node couldn't be unregistered due to the system failure.
-
group
public InetSocketAddress group()
Returns the multicast group (seeMulticastSeedNodeProviderConfig.setGroup(String)
).- Returns:
- Multicast group.
-
ttl
public int ttl()
Returns the multicast TTL (seeMulticastSeedNodeProviderConfig.setTtl(int)
).- Returns:
- Multicast group.
-
interval
public long interval()
Returns the multicast interval (seeMulticastSeedNodeProviderConfig.setInterval(long)
).- Returns:
- Multicast interval.
-
waitTime
public long waitTime()
Returns the time to await for responses from remote nodes (seeMulticastSeedNodeProviderConfig.setWaitTime(long)
).- Returns:
- Time to await for responses from remote nodes.
-
isLoopBackDisabled
public boolean isLoopBackDisabled()
Returnstrue
if receiving of multicast messages on the loopback address is disabled (seeMulticastSeedNodeProviderConfig.setLoopBackDisabled(boolean)
).- Returns:
true
if receiving of multicast messages on the loopback address is disabled.
-
jmx
public MulticastSeedNodeProviderJmx jmx()
Description copied from interface:JmxSupport
Creates a JMX object.- Specified by:
jmx
in interfaceJmxSupport<MulticastSeedNodeProviderJmx>
- Returns:
- JMX object.
-
-