Class StickyEndpointSelectionStrategy

java.lang.Object
com.linecorp.armeria.client.endpoint.StickyEndpointSelectionStrategy
All Implemented Interfaces:
EndpointSelectionStrategy

public final class StickyEndpointSelectionStrategy
extends Object
implements EndpointSelectionStrategy
An EndpointSelector strategy which implements sticky load-balancing using user passed ToLongFunction to compute hashes for consistent hashing.

This strategy can be useful when all requests that qualify some given criterias must be sent to the same backend server. A common use case is to send all requests for the same logged-in user to the same backend, which could have a local cache keyed by user id.

In below example, created strategy will route all HttpRequest which have the same value for key "cookie" of its header to the same server:


 ToLongFunction<ClientRequestContext> hasher = (ClientRequestContext ctx) -> {
     return ((HttpRequest) ctx.request()).headers().get(HttpHeaderNames.COOKIE).hashCode();
 };
 final StickyEndpointSelectionStrategy strategy = new StickyEndpointSelectionStrategy(hasher);