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.0.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. |