Class TopicNameCacheFilter
java.lang.Object
io.kroxylicious.proxy.internal.filter.impl.TopicNameCacheFilter
- All Implemented Interfaces:
io.kroxylicious.proxy.filter.Filter,io.kroxylicious.proxy.filter.MetadataRequestFilter,io.kroxylicious.proxy.filter.MetadataResponseFilter
@ThreadSafe
public class TopicNameCacheFilter
extends Object
implements io.kroxylicious.proxy.filter.MetadataRequestFilter, io.kroxylicious.proxy.filter.MetadataResponseFilter
A Filter that learns and caches all topic names, it is responsible for short circuit responding to internal
topic name retrievals.
Note that this is a special Filter in that a single instance is shared across all connections for a VirtualCluster rather than an instance per connection. This means it can be invoked by multiple threads concurrently.
-
Constructor Summary
ConstructorsConstructorDescriptionTopicNameCacheFilter(CacheConfiguration cacheConfiguration, String clusterName) TopicNameCacheFilter(CacheConfiguration cacheConfiguration, Map<org.apache.kafka.common.Uuid, String> topicNames, String clusterName) -
Method Summary
Modifier and TypeMethodDescriptionCompletionStage<io.kroxylicious.proxy.filter.RequestFilterResult> onMetadataRequest(short apiVersion, org.apache.kafka.common.message.RequestHeaderData header, org.apache.kafka.common.message.MetadataRequestData request, io.kroxylicious.proxy.filter.FilterContext context) CompletionStage<io.kroxylicious.proxy.filter.ResponseFilterResult> onMetadataResponse(short apiVersion, org.apache.kafka.common.message.ResponseHeaderData header, org.apache.kafka.common.message.MetadataResponseData response, io.kroxylicious.proxy.filter.FilterContext context) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.kroxylicious.proxy.filter.MetadataRequestFilter
shouldHandleMetadataRequestMethods inherited from interface io.kroxylicious.proxy.filter.MetadataResponseFilter
shouldHandleMetadataResponse
-
Constructor Details
-
TopicNameCacheFilter
-
TopicNameCacheFilter
@VisibleForTesting public TopicNameCacheFilter(CacheConfiguration cacheConfiguration, Map<org.apache.kafka.common.Uuid, String> topicNames, String clusterName) - Parameters:
topicNames- initial topic names to populate the cache with
-
-
Method Details
-
onMetadataRequest
public CompletionStage<io.kroxylicious.proxy.filter.RequestFilterResult> onMetadataRequest(short apiVersion, org.apache.kafka.common.message.RequestHeaderData header, org.apache.kafka.common.message.MetadataRequestData request, io.kroxylicious.proxy.filter.FilterContext context) - Specified by:
onMetadataRequestin interfaceio.kroxylicious.proxy.filter.MetadataRequestFilter
-
onMetadataResponse
public CompletionStage<io.kroxylicious.proxy.filter.ResponseFilterResult> onMetadataResponse(short apiVersion, org.apache.kafka.common.message.ResponseHeaderData header, org.apache.kafka.common.message.MetadataResponseData response, io.kroxylicious.proxy.filter.FilterContext context) - Specified by:
onMetadataResponsein interfaceio.kroxylicious.proxy.filter.MetadataResponseFilter
-