java-restify
1.0.0
1.0.0
  • Visão geral
  • Início
    • Instalação
    • Início rápido
  • Anotações
    • Anotações padrão
    • Extensões
      • JAX-RS
      • Spring Framework
  • Tipos de conteúdo
    • Serialização e deserialização
    • Formatos
      • wildcard
      • application/json
        • Jackson
        • Gson
        • JSON-B
        • JSON-P
      • application/xml
        • JAX-B
      • application/x-www-form-urlencoded
        • Map
        • Parameters
        • @Form
      • multipart/form-data
        • MultipartFile
        • Map
        • MultipartParameters
        • @MultipartForm
      • text/plain
      • text/html
      • application/octet-stream
  • Tipos de retorno de método
    • Visão geral
    • Objetos suportados
    • Extensões
      • Guava
      • Jsoup
      • Frameworks reativos
      • Vavr
      • Spring Framework
  • Requisições assíncronas
    • Visão geral
    • Extensões
      • Apache Async HTTP Client
      • OkHtp
      • Netty
  • Programação reativa
    • Frameworks suportados
      • RxJava (1.x)
      • RxJava (2.x)
      • Project Reactor
  • Manipulação de erros
    • Manipulação de erros
  • Retry
    • Retry
  • Clientes HTTP
    • Visão geral
      • Requisições assíncronas
    • Extensões
      • Jersey HTTP Client
      • Apache HTTP Client
      • Apache Async HTTP Client
      • OkHtp
      • Netty
  • Netflix OSS
    • Hystrix
    • Ribbon
  • Spring Framework
    • Anotações
    • Retornos de método
    • RestTemplate
    • Spring Boot
  • Autenticação
    • Basic
    • OAuth 2
  • Lista de artefatos
    • Artefatos
Powered by GitBook
On this page

Was this helpful?

  1. Clientes HTTP
  2. Visão geral

Requisições assíncronas

PreviousVisão geralNextExtensões

Last updated 6 years ago

Was this helpful?

Os objetos EndpointRequestExecutor e HttpClientRequestFactory têm assinaturas de métodos síncronas: recebem um objeto que representa uma requisição e retornam uma resposta. Para requisições assíncronas, o java-restify apenas utiliza esses objetos em uma thread separada e as coisas funcionam conforme o esperado.

Mas eventualmente o próprio client HTTP irá fornecer algum mecanismo para requisições assíncronas (como I/O não-bloqueante ou algum objeto especializado, por exemplo), e não seria possível criar implementações de EndpointRequestExecutor ou HttpClientRequestFactory que utilizassem esses recursos.

Para suportar esses casos de uso, existem variações assíncronas desses objetos: AsyncEndpointRequestExecutor e AsyncHttpClientRequestFactory, que utilizam CompletableFuture nas assinaturas de método, permitindo implementar o uso nativo de bibliotecas HTTP assíncronas.

O java-restify irá identificar se você está utilizando um client HTTP assíncrono, e as adaptações necessárias para chamadas de método síncronas/assíncronas serão feitas de maneira transparente.

Configuração

O thread pool utilizado para requisições assíncronas é o mesmo configurado para execução de métodos assíncronos; por padrão é um Executor criado a partir do método ).

ExecutorService myExecutor = Executors.newFixedThreadPool(10);

MyApi myApi = new RestifyProxyBuilder()
    .async(myExecutor)
    .target(MyApi.class)
      .build();

// ou

MyApi myApi = new RestifyProxyBuilder()
    .async()
      .using(myExecutor)
    .target(MyApi.class)
        .build();
Executors.newCachedThreadPool