Skip to content

Latest commit

 

History

History
131 lines (95 loc) · 2.72 KB

File metadata and controls

131 lines (95 loc) · 2.72 KB

Quarkus Integration

Ark provides a Quarkus extension that auto-configures HTTP clients as CDI beans.


Available Extensions

Extension Serializer Dependency
ark-quarkus-jackson Jackson 2.x (JacksonClassicSerializer) com.fasterxml.jackson

Installation

<dependency>
    <groupId>xyz.juandiii</groupId>
    <artifactId>ark-quarkus-jackson</artifactId>
</dependency>

This auto-configures:

  • JsonSerializer - using Quarkus-managed ObjectMapper
  • HttpTransport - ArkJdkHttpTransport (sync)
  • MutinyHttpTransport - ArkVertxMutinyTransport (reactive)
  • ArkClient.Builder - sync, @Dependent scope
  • MutinyArkClient.Builder - reactive, @Dependent scope

Sync Usage

@ApplicationScoped
public class UserService {

    private final Ark client;

    @Inject
    public UserService(ArkClient.Builder builder) {
        this.client = builder
            .baseUrl("https://api.example.com")
            .build();
    }

    public User getUser(String id) {
        return client.get("/users/" + id)
            .retrieve()
            .body(User.class);
    }
}

Mutiny Usage

@ApplicationScoped
public class ReactiveUserService {

    private final MutinyArk client;

    @Inject
    public ReactiveUserService(MutinyArkClient.Builder builder) {
        this.client = builder
            .baseUrl("https://api.example.com")
            .build();
    }

    public Uni<User> getUser(String id) {
        return client.get("/users/" + id)
            .retrieve()
            .body(User.class);
    }
}

Quarkus REST Endpoint

@Path("/users")
public class UserResource {

    @Inject MutinyArk client;

    @GET
    @Path("/{id}")
    public Uni<User> getUser(@PathParam("id") String id) {
        return client.get("/users/" + id)
            .retrieve()
            .body(User.class);
    }
}

Configuration

Configure globally and per-client via application.properties:

ark.logging.level=BODY
ark.client."user-api".base-url=https://api.example.com
ark.client."user-api".http-version=HTTP_2
ark.client."user-api".connect-timeout=5
ark.client."user-api".read-timeout=15
ark.client."user-api".tls-configuration-name=my-cert

See Quarkus Jackson Extension for full configuration reference.


Native Image

Supported out of the box. No additional configuration needed.


More Details