Java Client
Ignite 3 clients connect to the cluster via a standard socket connection. Unlike Ignite 2.x, there are no separate Thin and Thick clients in Ignite 3. All clients are 'thin'.
Clients do not become a part of the cluster topology, never hold any data, and are not used as a destination for compute calculations.
Getting Started
Prerequisites
To use Java thin client, Java 11 or newer is required.
Installation
Java client can be added to your project by using maven:
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-client</artifactId>
<version>3.1.0</version>
</dependency>
Connecting to Cluster
To initialize a client, use the IgniteClient class, and provide it with the configuration:
try (IgniteClient client = IgniteClient.builder()
.addresses("127.0.0.1:10800")
.build()
) {
// Your code goes here
}
Authentication
To pass authentication information, use the IgniteClientAuthenticator class and pass it to IgniteClient builder:
IgniteClientAuthenticator auth = BasicAuthenticator.builder().username("myUser").password("myPassword").build();
IgniteClient.builder()
.addresses("127.0.0.1:10800")
.authenticator(auth)
.build();
Logging
To configure client logging, add loggerFactory:
IgniteClient client = IgniteClient.builder()
.addresses("127.0.0.1")
.loggerFactory(System::getLogger)
.build();
The client logs connection errors, reconnects, and retries.
Client Metrics
Java
When running Java client, you need to enable metrics in the client builder:
IgniteClient client = IgniteClient.builder()
.addresses("127.0.0.1:10800")
.metricsEnabled(true)
.build();
After that, client metrics will be available to any Java monitoring tool, for example JDK Mission Control.
Available Java Metrics
| Metric name | Description |
|---|---|
ConnectionsActive |
The number of currently active connections. |
ConnectionsEstablished |
The number of established connections. |
ConnectionsLost |
The number of connections lost. |
ConnectionsLostTimeout |
The number of connections lost due to a timeout. |
HandshakesFailed |
The number of failed handshakes. |
HandshakesFailedTimeout |
The number of handshakes that failed due to a timeout. |
RequestsActive |
The number of currently active requests. |
RequestsSent |
The number of requests sent. |
RequestsCompleted |
The number of completed requests. Requests are completed once a response is received. |
RequestsRetried |
The number of request retries. |
RequestsFailed |
The number of failed requests. |
BytesSent |
The amount of bytes sent. |
BytesReceived |
The amount of bytes received. |
StreamerBatchesSent |
The number of data streamer batches sent. |
StreamerItemsSent |
The number of data streamer items sent. |
StreamerBatchesActive |
The number of in-flight data streamer batches. |
StreamerItemsQueued |
The number of queued data streamer items. |
Client Connection Configuration
There is a number of configuration properties managing the connection between the client and Ignite cluster:
IgniteClient client = IgniteClient.builder()
.addresses("127.0.0.1:10800")
.connectTimeout(5000)
.heartbeatInterval(30000)
.heartbeatTimeout(5000)
.operationTimeout(3000)
.backgroundReconnectInterval(30000)
.retryPolicy(new RetryLimitPolicy().retryLimit(8))
.build();
| Configuration name | Description |
|---|---|
connectTimeout |
Client connection timeout, in milliseconds. |
heartbeatInterval |
Heartbeat message interval, in milliseconds. |
heartbeatTimeout |
Heartbeat message timeout, in milliseconds. |
operationTimeout |
Operation timeout, in milliseconds. |
backgroundReconnectInterval |
Background reconnect interval, in milliseconds. |
retryPolicy |
Retry policy. By default, all read operations are retried up to 16 times, and write operations are not retried. |
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.
