Ignite Summit 2025 — Watch on demand 

Edit

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.