LIGHT

  • News
  • Docs
  • Community
  • Reddit
  • GitHub

Light Consumer 4j

Light Consumer 4j is a module that helps consumers to integrate with light-4j APIs easily. It is built on top of Http2Client & java8 completable future for multiple downstream API invocations. It also has a lot of extra features like connection pooling, circuit breaker, etc. Like Http2Client in light-4j, it supports direct URL and service discovery (Consul) to call the APIs.

Usage

Add dependency in your project.

<dependency>
    <groupId>com.networknt</groupId>
    <artifactId>light-consumer-4j</artifactId>
    <version>1.5.26</version>
</dependency>

Here are the methods available in ClientBuilder.

Future send() // Send request.

String getServiceUrl() // Get the resolved serviceUrl

disableHttp2() // Disable Http2, by default it is enabled.

setClientRequest(ClientRequest reg) // set client request to httpClientRequest.

setRequestBody(String requestBody) // set requestBody to httpClientRequest.

setHeaderValue(HttpString headerName,..) // set headerName and headerValue to httpClientRequest.

setApiHost(String apiUrl) // set apiUrl into httpClientRequest to call api with direct url .

setConnectionCacheTTLms(long tTLms) // set connection cache time out.

setRequestTimeout(TimeoutDef timeout) // set request time out

setConnectionRequestTimeout(TimeoutDef t)// set connection request timeout

setAuthToken(String authToken) // Set the auth token in the request

getAuthToken() // get authToken

addCCToken() // add the access token in request header and also checks access token expiration.

setServiceDef(ServiceDef serviceDef) // set protocol,service id , environment and requestKey to call api via consul

setMaxReqCount(int maxReqCount) // enable connection cache by request number

Here are the code examples to call the api.

Call the api with direct URL:

Example 1:

Future<ClientResponse> clientRequest = new HttpClientBuilder()
                      
    //set direct url
   .setApiHost("https://localhost:8453")
   .setClientRequest(new ClientRequest().setPath("/v1/customers/1").setMethod(Methods.GET))
   .setLatch(new CountDownLatch(1))
   .disableHttp2()
   .addCCToken()
   .setConnectionRequestTimeout(new TimeoutDef(100, TimeUnit.SECONDS))
   .setRequestTimeout(new TimeoutDef(100, TimeUnit.SECONDS))
   .setRequestBody("")
   .setConnectionCacheTTLms(10000)
   .setMaxReqCount(5)
   .send();
ClientResponse clientResponse = clientRequest.get();

Example 2:

            public static final String CUSTOMERS_URL = "https://localhost:8453";
            private static final String CUSTOMERS_PATH = "/v1/customers/{id}";
            
            HttpClientBuilder clientBuilder = new HttpClientBuilder();
            
            ClientRequest clientRequest = new ClientRequest().setMethod(Methods.GET)
            .setPath(CUSTOMERS_PATH.replace("{id}", id));
            
            clientBuilder.setClientRequest(clientRequest);
            clientBuilder.setLatch(new CountDownLatch(1));
            if (!Server.getServerConfig().isEnableHttp2()) {
              clientBuilder.disableHttp2();
            }
            clientBuilder.setApiHost(CUSTOMERS_URL);
            clientBuilder.setConnectionCacheTTLms(20000);
            clientBuilder.setMaxReqCount(5)
            clientBuilder.setConnectionRequestTimeout(new TimeoutDef(10, TimeUnit.SECONDS));
            Future<ClientResponse> clientBuilderRequest = clientBuilder.send();
            ClientResponse clientResponse = clientBuilderRequest.get();

Call the api via service discover (Consul):

Example 1:

Future<ClientResponse> clientRequest = new HttpClientBuilder()
                     
    //set protocol,service id , environment  and requestKey 
   .setServiceDef(new ServiceDef("https", "training.customers-1.00.00","training", null))
   .setClientRequest(new ClientRequest().setPath("/v1/customers/1").setMethod(Methods.GET))
   .setLatch(new CountDownLatch(1))
   .disableHttp2()
   .addCCToken()
   .setConnectionRequestTimeout(new TimeoutDef(100, TimeUnit.SECONDS))
   .setRequestTimeout(new TimeoutDef(100, TimeUnit.SECONDS))
   .setRequestBody("")
   .setConnectionCacheTTLms(10000)
   .setMaxReqCount(5)
   .send();
ClientResponse clientResponse = clientRequest.get();

Example 2:

            public static final String CUSTOMERS_SERVICE = "training.customers-1.00.00";
            private static final String CUSTOMERS_PATH = "/v1/customers/{id}";
            
            HttpClientBuilder clientBuilder = new HttpClientBuilder();
            
            ClientRequest clientRequest = new ClientRequest().setMethod(Methods.GET)
            .setPath(CUSTOMERS_PATH.replace("{id}", id));
            
            clientBuilder.setClientRequest(clientRequest);
            clientBuilder.setLatch(new CountDownLatch(1));
            if (!Server.getServerConfig().isEnableHttp2()) {
                clientBuilder.disableHttp2();
            }
            clientBuilder.setServiceDef(new ServiceDef("https", CUSTOMERS_SERVICE, "training", null));
            clientBuilder.setConnectionCacheTTLms(20000);
            clientBuilder.setMaxReqCount(5);
            clientBuilder.setConnectionRequestTimeout(new TimeoutDef(10, TimeUnit.SECONDS));
            Future<ClientResponse> clientBuilderRequest = clientBuilder.send();
            ClientResponse clientResponse = clientBuilderRequest.get();
  • About Light
    • Overview
    • Testimonials
    • What is Light
    • Features
    • Principles
    • Benefits
    • Roadmap
    • Community
    • Articles
    • Videos
    • License
    • Why Light Platform
  • Getting Started
    • Get Started Overview
    • Environment
    • Light Codegen Tool
    • Light Rest 4j
    • Light Tram 4j
    • Light Graphql 4j
    • Light Hybrid 4j
    • Light Eventuate 4j
    • Light Oauth2
    • Light Portal Service
    • Light Proxy Server
    • Light Router Server
    • Light Config Server
    • Light Saga 4j
    • Light Session 4j
    • Webserver
    • Websocket
    • Spring Boot Servlet
  • Architecture
    • Architecture Overview
    • API Category
    • API Gateway
    • Architecture Patterns
    • CQRS
    • Eco System
    • Event Sourcing
    • Fail Fast vs Fail Slow
    • Integration Patterns
    • JavaEE declining
    • Key Distribution
    • Microservices Architecture
    • Microservices Monitoring
    • Microservices Security
    • Microservices Traceability
    • Modular Monolith
    • Platform Ecosystem
    • Plugin Architecture
    • Scalability and Performance
    • Serverless
    • Service Collaboration
    • Service Mesh
    • SOA
    • Spring is bloated
    • Stages of API Adoption
    • Transaction Management
    • Microservices Cross-cutting Concerns Options
    • Service Mesh Plus
    • Service Discovery
  • Design
    • Design Overview
    • Design First vs Code First
    • Desgin Pattern
    • Service Evolution
    • Consumer Contract and Consumer Driven Contract
    • Handling Partial Failure
    • Idempotency
    • Server Life Cycle
    • Environment Segregation
    • Database
    • Decomposition Patterns
    • Http2
    • Test Driven
    • Multi-Tenancy
    • Why check token expiration
    • WebServices to Microservices
  • Cross-Cutting Concerns
    • Concerns Overview
  • API Styles
    • Light-4j for absolute performance
    • Style Overview
    • Distributed session on IMDG
    • Hybrid Serverless Modularized Monolithic
    • Kafka - Event Sourcing and CQRS
    • REST - Representational state transfer
    • Web Server with Light
    • Websocket with Light
    • Spring Boot Integration
    • Single Page Application
    • GraphQL - A query language for your API
    • Light IBM MQ
    • Light AWS Lambda
    • Chaos Monkey
  • Infrastructure Services
    • Service Overview
    • Light Proxy
    • Light Mesh
    • Light Router
    • Light Portal
    • Messaging Infrastructure
    • Centralized Logging
    • COVID-19
    • Light OAuth2
    • Metrics and Alerts
    • Config Server
    • Tokenization
    • Light Controller
  • Tool Chain
    • Tool Chain Overview
  • Utility Library
  • Service Consumer
    • Service Consumer
  • Development
    • Development Overview
  • Deployment
    • Deployment Overview
    • Frontend Backend
    • Linux Service
    • Windows Service
    • Install Eventuate on Windows
    • Secure API
    • Client vs light-router
    • Memory Limit
    • Deploy to Kubernetes
  • Benchmark
    • Benchmark Overview
  • Tutorial
    • Tutorial Overview
  • Troubleshooting
    • Troubleshoot
  • FAQ
    • FAQ Overview
  • Milestones
  • Contribute
    • Contribute to Light
    • Development
    • Documentation
    • Example
    • Tutorial
“Light Consumer 4j” was last updated: June 27, 2021: fixes #271 update TestServer to replace Server.config with Server.getServerConfig method (b34d9c7)
Improve this page
  • News
  • Docs
  • Community
  • Reddit
  • GitHub
  • About Light
  • Getting Started
  • Architecture
  • Design
  • Cross-Cutting Concerns
  • API Styles
  • Infrastructure Services
  • Tool Chain
  • Utility Library
  • Service Consumer
  • Development
  • Deployment
  • Benchmark
  • Tutorial
  • Troubleshooting
  • FAQ
  • Milestones
  • Contribute