Package com.clickhouse.client
Class ClickHouseNode
- java.lang.Object
-
- com.clickhouse.client.ClickHouseNode
-
- All Implemented Interfaces:
Serializable,Function<ClickHouseNodeSelector,ClickHouseNode>
public class ClickHouseNode extends Object implements Function<ClickHouseNodeSelector,ClickHouseNode>, Serializable
This class depicts a ClickHouse server, essentially a combination of host, port and protocol, for client to connect.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classClickHouseNode.BuilderMutable and non-thread safe builder.static classClickHouseNode.StatusNode status.
-
Field Summary
Fields Modifier and Type Field Description protected ClickHouseConfigconfigprotected AtomicLonglastUpdateTimeLast update time in milliseconds.protected AtomicReference<ClickHouseNodeManager>managerstatic StringSCHEME_DELIMITER
-
Constructor Summary
Constructors Modifier Constructor Description protectedClickHouseNode(ClickHouseNode.Builder builder)protectedClickHouseNode(String host, ClickHouseProtocol protocol, int port, ClickHouseCredentials credentials, Map<String,String> options, Set<String> tags)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ClickHouseNodeapply(ClickHouseNodeSelector t)static ClickHouseNode.Builderbuilder()Gets builder for creating a new node, same asbuilder(null).static ClickHouseNode.Builderbuilder(ClickHouseNode base)Gets builder for creating a new node based on the given one.booleanequals(Object obj)InetSocketAddressgetAddress()Gets socket address to connect to this node.StringgetBaseUri()Gets base URI which is composed of protocol, host and port.StringgetCluster()Gets cluster name of the node.Optional<ClickHouseCredentials>getCredentials()Gets credentials for accessing this node.ClickHouseCredentialsgetCredentials(ClickHouseConfig config)Gets credentials for accessing this node.Optional<String>getDatabase()Gets database of the node.StringgetDatabase(ClickHouseConfig config)Gets database of the node.StringgetHost()Gets host of the node.Map<String,String>getOptions()Gets all options of the node.intgetPort()Gets port of the node.ClickHouseProtocolgetProtocol()Gets protocol used by the node.Set<String>getTags()Gets all tags of the node.Optional<TimeZone>getTimeZone()Gets time zone of the node.TimeZonegetTimeZone(ClickHouseConfig config)Gets time zone of the node.Optional<ClickHouseVersion>getVersion()Gets version of the node.ClickHouseVersiongetVersion(ClickHouseConfig config)Gets version of the node.intgetWeight()Gets weight of the node.inthashCode()booleanhasPreferredDatabase()Checks if preferred database was specified or not.booleanisManaged()Checks whether the node is managed by aClickHouseClusterroClickHouseNodes.booleanisSameEndpoint(ClickHouseNode node)Checks if the given node has same base URI as current one.booleanisStandalone()Checks whether the node is not managed by anyClickHouseClusterroClickHouseNodes.static ClickHouseNodeof(String uri)Creates a node object using given URI.static ClickHouseNodeof(String uri, ClickHouseNode template)Creates a node object using given URI and template.static ClickHouseNodeof(String host, ClickHouseProtocol protocol, int port, String database, String... tags)Creates a node object in one go.static ClickHouseNodeof(String uri, Map<?,?> options)Creates a node object using given URI.static ClickHouseNodeof(URI uri, ClickHouseNode template)Creates a node object using given URI.protected ClickHouseNodeprobe()protected ClickHouseNodesetManager(ClickHouseNodeManager m)Sets manager for this node.StringtoString()URItoUri()Converts to URI, without credentials for security reason.URItoUri(String schemePrefix)Converts to URI, without credentials for security reason.voidupdate(ClickHouseNode.Status status)Updates status of the node.
-
-
-
Field Detail
-
SCHEME_DELIMITER
public static final String SCHEME_DELIMITER
- See Also:
- Constant Field Values
-
lastUpdateTime
protected final AtomicLong lastUpdateTime
Last update time in milliseconds.
-
config
protected final ClickHouseConfig config
-
manager
protected final AtomicReference<ClickHouseNodeManager> manager
-
-
Constructor Detail
-
ClickHouseNode
protected ClickHouseNode(ClickHouseNode.Builder builder)
-
ClickHouseNode
protected ClickHouseNode(String host, ClickHouseProtocol protocol, int port, ClickHouseCredentials credentials, Map<String,String> options, Set<String> tags)
-
-
Method Detail
-
builder
public static ClickHouseNode.Builder builder()
Gets builder for creating a new node, same asbuilder(null).- Returns:
- builder for creating a new node
-
builder
public static ClickHouseNode.Builder builder(ClickHouseNode base)
Gets builder for creating a new node based on the given one.- Parameters:
base- template to start with- Returns:
- builder for creating a new node
-
of
public static ClickHouseNode of(String host, ClickHouseProtocol protocol, int port, String database, String... tags)
Creates a node object in one go. Short version ofClickHouseNode.builder().host(host).port(protocol, port).database(database).tags(tags).build().- Parameters:
host- host name, null meansClickHouseDefaults.HOSTprotocol- protocol, null meansClickHouseDefaults.PROTOCOLport- port numberdatabase- database name, null meansClickHouseDefaults.DATABASEtags- tags for the node, null tag will be ignored- Returns:
- non-null node object
-
of
public static ClickHouseNode of(String uri)
Creates a node object using given URI. Same asof(uri, ClickHouseProtocol.ANY).- Parameters:
uri- non-empty URI- Returns:
- non-null node object
-
of
public static ClickHouseNode of(String uri, Map<?,?> options)
Creates a node object using given URI. Same asof(uri, ClickHouseProtocol.ANY).- Parameters:
uri- non-empty URIoptions- default options- Returns:
- non-null node object
-
of
public static ClickHouseNode of(String uri, ClickHouseNode template)
Creates a node object using given URI and template.- Parameters:
uri- non-empty URItemplate- optinal template used for creating the node- Returns:
- non-null node object
-
of
public static ClickHouseNode of(URI uri, ClickHouseNode template)
Creates a node object using given URI.- Parameters:
uri- non-null URI which contains scheme(protocol), host and optionally porttemplate- optinal template used for creating the node object- Returns:
- non-null node object
-
probe
protected ClickHouseNode probe()
-
setManager
protected ClickHouseNode setManager(ClickHouseNodeManager m)
Sets manager for this node.- Parameters:
m- node manager- Returns:
- this node
-
getAddress
public InetSocketAddress getAddress()
Gets socket address to connect to this node.- Returns:
- socket address to connect to the node
-
getBaseUri
public String getBaseUri()
Gets base URI which is composed of protocol, host and port.- Returns:
- non-emtpy base URI
-
getCredentials
public Optional<ClickHouseCredentials> getCredentials()
Gets credentials for accessing this node. UseClickHouseConfig.getDefaultCredentials()if this is not present.- Returns:
- credentials for accessing this node
-
getCredentials
public ClickHouseCredentials getCredentials(ClickHouseConfig config)
Gets credentials for accessing this node. It first attempts to use credentials tied to the node, and then use default credentials from the given configuration.- Parameters:
config- non-null configuration for retrieving default credentials- Returns:
- credentials for accessing this node
-
getHost
public String getHost()
Gets host of the node.- Returns:
- host of the node
-
getPort
public int getPort()
Gets port of the node.- Returns:
- port of the node
-
getDatabase
public Optional<String> getDatabase()
Gets database of the node.- Returns:
- database of the node
-
getDatabase
public String getDatabase(ClickHouseConfig config)
Gets database of the node. WhenhasPreferredDatabase()isfalse, it will use database from the given configuration.- Parameters:
config- non-null configuration to get default database- Returns:
- database of the node
-
getOptions
public Map<String,String> getOptions()
Gets all options of the node.- Returns:
- options of the node
-
getWeight
public int getWeight()
Gets weight of the node.- Returns:
- weight of the node
-
getTimeZone
public Optional<TimeZone> getTimeZone()
Gets time zone of the node.- Returns:
- time zone of the node
-
getTimeZone
public TimeZone getTimeZone(ClickHouseConfig config)
Gets time zone of the node. When not defined, it will use server time zone from the given configuration.- Parameters:
config- non-null configuration to get server time zone- Returns:
- time zone of the node
-
getVersion
public Optional<ClickHouseVersion> getVersion()
Gets version of the node.- Returns:
- version of the node
-
getVersion
public ClickHouseVersion getVersion(ClickHouseConfig config)
Gets version of the node. When not defined, it will use server version from the given configuration.- Parameters:
config- non-null configuration to get server version- Returns:
- version of the node
-
getCluster
public String getCluster()
Gets cluster name of the node.- Returns:
- cluster name of node
-
getProtocol
public ClickHouseProtocol getProtocol()
Gets protocol used by the node.- Returns:
- protocol used by the node
-
hasPreferredDatabase
public boolean hasPreferredDatabase()
Checks if preferred database was specified or not. When preferred database was not specified,getDatabase()will return default database.- Returns:
- true if preferred database was specified; false otherwise
-
isManaged
public boolean isManaged()
Checks whether the node is managed by aClickHouseClusterroClickHouseNodes.- Returns:
- true if the node is managed; false otherwise
-
isStandalone
public boolean isStandalone()
Checks whether the node is not managed by anyClickHouseClusterroClickHouseNodes.- Returns:
- true if the node is not managed; false otherwise
-
isSameEndpoint
public boolean isSameEndpoint(ClickHouseNode node)
Checks if the given node has same base URI as current one.- Parameters:
node- node to test- Returns:
- true if the nodes are same endpoint; false otherwise
-
update
public void update(ClickHouseNode.Status status)
Updates status of the node. This will only work when the node is managed(isManaged()returnstrue).- Parameters:
status- non-null node status
-
apply
public ClickHouseNode apply(ClickHouseNodeSelector t)
- Specified by:
applyin interfaceFunction<ClickHouseNodeSelector,ClickHouseNode>
-
toUri
public URI toUri()
Converts to URI, without credentials for security reason.- Returns:
- non-null URI
-
-