or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

event-loop.mdhttp-client.mdhttp2-config.mdindex.mdproxy-config.md
tile.json

tessl/maven-software-amazon-awssdk--netty-nio-client

A non-blocking HTTP client implementation for AWS SDK Java applications using Netty framework, enabling efficient network communication with AWS services through asynchronous I/O operations

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/software.amazon.awssdk/netty-nio-client@2.32.x

To install, run

npx @tessl/cli install tessl/maven-software-amazon-awssdk--netty-nio-client@2.32.0

index.mddocs/

AWS SDK Java v2 Netty NIO Client

A high-performance, non-blocking HTTP client implementation for AWS SDK Java v2 applications using the Netty framework. This client enables efficient asynchronous network communication with AWS services through NIO (New I/O) operations, supporting both HTTP/1.1 and HTTP/2 protocols with advanced connection pooling, proxy support, and SSL/TLS configuration.

Package Information

  • Package Name: netty-nio-client
  • Package Type: maven
  • Group ID: software.amazon.awssdk
  • Artifact ID: netty-nio-client
  • Language: Java
  • Installation: Include in Maven/Gradle dependencies with AWS SDK BOM
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>netty-nio-client</artifactId>
</dependency>

Core Imports

import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient;
import software.amazon.awssdk.http.nio.netty.SdkEventLoopGroup;
import software.amazon.awssdk.http.nio.netty.Http2Configuration;
import software.amazon.awssdk.http.nio.netty.ProxyConfiguration;

Basic Usage

import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient;
import software.amazon.awssdk.http.SdkAsyncHttpClient;

// Create with default configuration
SdkAsyncHttpClient httpClient = NettyNioAsyncHttpClient.create();

// Create with custom configuration
SdkAsyncHttpClient httpClient = NettyNioAsyncHttpClient.builder()
    .maxConcurrency(100)
    .connectionTimeout(Duration.ofSeconds(10))
    .readTimeout(Duration.ofSeconds(30))
    .protocol(Protocol.HTTP2)
    .build();

// Use with AWS service clients
S3AsyncClient s3Client = S3AsyncClient.builder()
    .httpClient(httpClient)
    .build();

// Always close resources
httpClient.close();

Architecture

The Netty NIO Client is built around several key components:

  • NettyNioAsyncHttpClient: Main HTTP client implementation with comprehensive async support
  • Configuration System: Immutable configuration objects using builder patterns for HTTP/2, proxy, and event loop settings
  • Event Loop Management: Efficient Netty event loop sharing and lifecycle management through SdkEventLoopGroup
  • Protocol Support: Full HTTP/1.1 and HTTP/2 support with ALPN negotiation and protocol-specific optimizations
  • Connection Pooling: Advanced connection pooling with configurable limits, timeouts, and idle connection management
  • ServiceLoader Integration: Automatic discovery by AWS SDK through NettySdkAsyncHttpService

Capabilities

HTTP Client

The primary HTTP client implementation providing asynchronous HTTP communication with comprehensive configuration options for timeouts, connection pooling, and protocol settings.

public final class NettyNioAsyncHttpClient implements SdkAsyncHttpClient {
    public CompletableFuture<Void> execute(AsyncExecuteRequest request);
    public void close();
    public String clientName();
    public static Builder builder();
    public static SdkAsyncHttpClient create();
}

public interface Builder extends SdkAsyncHttpClient.Builder<Builder> {
    Builder maxConcurrency(Integer maxConcurrency);
    Builder readTimeout(Duration readTimeout);
    Builder connectionTimeout(Duration connectionTimeout);
    Builder protocol(Protocol protocol);
    Builder eventLoopGroup(SdkEventLoopGroup eventLoopGroup);
    NettyNioAsyncHttpClient build();
}

HTTP Client Configuration

Event Loop Management

Event loop and channel factory management for efficient resource sharing and lifecycle control across multiple HTTP clients.

public final class SdkEventLoopGroup {
    public EventLoopGroup eventLoopGroup();
    public ChannelFactory<? extends Channel> channelFactory();
    public static SdkEventLoopGroup create(EventLoopGroup eventLoopGroup);
    public static Builder builder();
}

public interface Builder {
    Builder numberOfThreads(Integer numberOfThreads);
    Builder threadFactory(ThreadFactory threadFactory);
    SdkEventLoopGroup build();
}

Event Loop Management

HTTP/2 Configuration

HTTP/2 protocol-specific settings for stream management, window sizes, and connection health monitoring.

public final class Http2Configuration implements ToCopyableBuilder<Http2Configuration.Builder, Http2Configuration> {
    public Long maxStreams();
    public Integer initialWindowSize();
    public Duration healthCheckPingPeriod();
    public static Builder builder();
}

public interface Builder extends CopyableBuilder<Builder, Http2Configuration> {
    Builder maxStreams(Long maxStreams);
    Builder initialWindowSize(Integer initialWindowSize);
    Builder healthCheckPingPeriod(Duration healthCheckPingPeriod);
}

HTTP/2 Configuration

Proxy Configuration

Comprehensive proxy support with automatic system property and environment variable integration for enterprise environments.

public final class ProxyConfiguration implements ToCopyableBuilder<ProxyConfiguration.Builder, ProxyConfiguration> {
    public String scheme();
    public String host();
    public int port();
    public String username();
    public String password();
    public Set<String> nonProxyHosts();
    public static Builder builder();
}

public interface Builder extends CopyableBuilder<Builder, ProxyConfiguration> {
    Builder scheme(String scheme);
    Builder host(String host);
    Builder port(int port);
    Builder useSystemPropertyValues(Boolean useSystemPropertyValues);
}

Proxy Configuration

Service Discovery

ServiceLoader integration enabling automatic HTTP client discovery by the AWS SDK without explicit configuration.

public class NettySdkAsyncHttpService implements SdkAsyncHttpService {
    public SdkAsyncHttpClient.Builder createAsyncHttpClientFactory();
}

The service is automatically registered and discovered when the netty-nio-client is on the classpath, eliminating the need for manual HTTP client configuration in many use cases.

Types

Core Types

// AWS SDK Core Types
interface SdkAsyncHttpClient extends SdkHttpClient {
    CompletableFuture<Void> execute(AsyncExecuteRequest request);
    void close();
    String clientName();
}

interface AsyncExecuteRequest {
    SdkHttpRequest request();
    AsyncRequestBody requestBody();
    AsyncExecuteRequest.ResponseHandler responseHandler();
}

enum Protocol {
    HTTP1_1, HTTP2
}

enum ProtocolNegotiation {
    ALPN, ASSUME_PROTOCOL
}

// Netty Types
interface EventLoopGroup extends ScheduledExecutorService, Iterable<EventExecutor> {
    // Netty event loop group interface
}

interface ChannelFactory<T extends Channel> {
    T newChannel();
}

class ChannelOption<T> {
    // Netty channel configuration options
}

enum SslProvider {
    JDK, OPENSSL, OPENSSL_REFCNT
}

Duration and Timeout Types

// Standard Java duration type used throughout the API
class Duration {
    static Duration ofSeconds(long seconds);
    static Duration ofMillis(long millis);
    static Duration ofMinutes(long minutes);
}

TLS Configuration Types

interface TlsKeyManagersProvider {
    KeyManager[] keyManagers();
}

interface TlsTrustManagersProvider {
    TrustManager[] trustManagers();
}