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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classMutable and non-thread safe builder.static enumNode status. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final ClickHouseConfigprotected final AtomicLongLast update time in milliseconds.protected final AtomicReference<ClickHouseNodeManager>static final String -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedClickHouseNode(ClickHouseNode.Builder builder) protectedClickHouseNode(String host, ClickHouseProtocol protocol, int port, ClickHouseCredentials credentials, Map<String, String> options, Set<String> tags) -
Method Summary
Modifier and TypeMethodDescriptionstatic 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.booleanGets socket address to connect to this node.Gets base URI which is composed of protocol, host and port.Gets cluster name of the node.Gets configuration.Gets credentials for accessing this node.getCredentials(ClickHouseConfig config) Gets credentials for accessing this node.Gets database of the node.getDatabase(ClickHouseConfig config) Gets database of the node.getHost()Gets host of the node.Gets all options of the node.intgetPort()Gets port of the node.Gets protocol used by the node.getTags()Gets all tags of the node.Gets time zone of the node.getTimeZone(ClickHouseConfig config) Gets time zone of the node.Gets version of the node.getVersion(ClickHouseConfig config) Gets version of the node.intGets weight of the node.inthashCode()booleanChecks if preferred database was specified or not.booleanChecks whether the node is managed by aClickHouseClusterroClickHouseNodes.booleanisSameEndpoint(ClickHouseNode node) Checks if the given node has same base URI as current one.booleanChecks whether the node is not managed by anyClickHouseClusterroClickHouseNodes.static ClickHouseNodeCreates 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 ClickHouseNodeCreates a node object using given URI.static ClickHouseNodeof(URI uri, ClickHouseNode template) Creates a node object using given URI.protected ClickHouseNodeprobe()protected ClickHouseNodeSets manager for this node.toString()toUri()Converts to URI, without credentials for security reason.Converts to URI, without credentials for security reason.voidupdate(ClickHouseNode.Status status) Updates status of the node.
-
Field Details
-
SCHEME_DELIMITER
- See Also:
-
lastUpdateTime
Last update time in milliseconds. -
config
-
manager
-
-
Constructor Details
-
ClickHouseNode
-
ClickHouseNode
protected ClickHouseNode(String host, ClickHouseProtocol protocol, int port, ClickHouseCredentials credentials, Map<String, String> options, Set<String> tags)
-
-
Method Details
-
builder
Gets builder for creating a new node, same asbuilder(null).- Returns:
- builder for creating a new node
-
builder
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
Creates a node object using given URI. Same asof(uri, ClickHouseProtocol.ANY).- Parameters:
uri- non-empty URI- Returns:
- non-null node object
-
of
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
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
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
-
setManager
Sets manager for this node.- Parameters:
m- node manager- Returns:
- this node
-
getAddress
Gets socket address to connect to this node.- Returns:
- socket address to connect to the node
-
getBaseUri
Gets base URI which is composed of protocol, host and port.- Returns:
- non-emtpy base URI
-
getConfig
Gets configuration.- Returns:
- non-null configuration
-
getCredentials
Gets credentials for accessing this node. UseClickHouseConfig.getDefaultCredentials()if this is not present.- Returns:
- credentials for accessing this node
-
getCredentials
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
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
Gets database of the node.- Returns:
- database of the node
-
getDatabase
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
Gets all options of the node.- Returns:
- options of the node
-
getTags
Gets all tags of the node.- Returns:
- tags of the node
-
getWeight
public int getWeight()Gets weight of the node.- Returns:
- weight of the node
-
getTimeZone
Gets time zone of the node.- Returns:
- time zone of the node
-
getTimeZone
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
Gets version of the node.- Returns:
- version of the node
-
getVersion
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
Gets cluster name of the node.- Returns:
- cluster name of node
-
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
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
Updates status of the node. This will only work when the node is managed(isManaged()returnstrue).- Parameters:
status- non-null node status
-
apply
- Specified by:
applyin interfaceFunction<ClickHouseNodeSelector,ClickHouseNode>
-
hashCode
public int hashCode() -
equals
-
toString
-
toUri
Converts to URI, without credentials for security reason.- Returns:
- non-null URI
-
toUri
Converts to URI, without credentials for security reason.- Parameters:
schemePrefix- optional prefix of scheme- Returns:
- non-null URI
-