GridGain Developers Hub

Java Client

GridGain 9 clients connect to the cluster via a standard socket connection. Unlike GridGain 2.x, there is no separate Thin and Thick clients in GridGain 9. 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.gridgain</groupId>
    <artifactId>ignite-client</artifactId>
    <version>9.0.11</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();

Limitations

There are limitations to user types that can be used for such a mapping. Some limitations are common, and others are platform-specific due to the programming language used.

  • Only flat field structure is supported, meaning no nesting user objects. This is because Ignite tables, and therefore tuples have flat structure themselves;

  • Fields should be mapped to Ignite types;

  • All fields in user type should either be mapped to Table column or explicitly excluded;

  • All columns from Table should be mapped to some field in the user type;

  • Java only: Users should implement Mapper classes for user types for more flexibility;

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 existing 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 GridGain cluster:

IgniteClient client = IgniteClient.builder()
  .addresses("127.0.0.1:10800")
  .connectTimeout(5000)
  .heartbeatInterval(30000)
  .heartbeatTimeout(5000)
  .operationTimeout(3000)
  .reconnectInterval(30000)
  .reconnectThrottlingPeriod(30000)
  .reconnectThrottlingRetries(3)
  .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.

reconnectInterval

Background reconnect interval, in milliseconds.

reconnectThrottlingPeriod

Reconnect throttling period, in milliseconds.

reconnectThrottlingRetries

Reconnect throttling retries.

retryPolicy

Retry policy. By default, all read operations are retried up to 16 times, and write operations are not retried.