Interface BrokerInterceptor
- All Superinterfaces:
AutoCloseable
- All Known Implementing Classes:
BrokerInterceptors,BrokerInterceptorWithClassLoader
A plugin interface that allows you to intercept the
client requests to the Pulsar brokers.
BrokerInterceptor callbacks may be called from multiple threads. Interceptor implementation must ensure thread-safety, if needed.
-
Method Summary
Modifier and TypeMethodDescriptiondefault voidbeforeSendMessage(Subscription subscription, org.apache.bookkeeper.mledger.Entry entry, long[] ackSet, org.apache.pulsar.common.api.proto.MessageMetadata msgMetadata) Intercept messages before sending them to the consumers.voidclose()Close this broker interceptor.default voidIntercept after a consumer is created.voidinitialize(PulsarService pulsarService) Initialize the broker interceptor.default voidmessageAcked(ServerCnx cnx, Consumer consumer, org.apache.pulsar.common.api.proto.CommandAck ackCmd) Intercept after a message ack is processed.default voidmessageDispatched(ServerCnx cnx, Consumer consumer, long ledgerId, long entryId, io.netty.buffer.ByteBuf headersAndPayload) Intercept after a message is dispatched to consumer.default voidmessageProduced(ServerCnx cnx, Producer producer, long startTimeNs, long ledgerId, long entryId, Topic.PublishContext publishContext) Intercept after a message is produced.voidCalled by the broker while connection closed.default voidCalled by the broker when a new connection is created.default voidonFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) The interception of web processing, as same as `Filter.onFilter`.voidonPulsarCommand(org.apache.pulsar.common.api.proto.BaseCommand command, ServerCnx cnx) Called by the broker while new command incoming.voidonWebserviceRequest(javax.servlet.ServletRequest request) Called by the web service while new request incoming.voidonWebserviceResponse(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response) Intercept the webservice response before send to client.default voidCalled by the broker when a new connection is created.default voidIntercept when a transaction ends.default voidIntercept when a transaction begins.
-
Method Details
-
beforeSendMessage
default void beforeSendMessage(Subscription subscription, org.apache.bookkeeper.mledger.Entry entry, long[] ackSet, org.apache.pulsar.common.api.proto.MessageMetadata msgMetadata) Intercept messages before sending them to the consumers.- Parameters:
subscription- pulsar subscriptionentry- entryackSet- entry ack bitset. it is either null or an array of long-based bitsets.msgMetadata- message metadata. The message metadata will be recycled after this call.
-
onConnectionCreated
Called by the broker when a new connection is created. -
producerCreated
Called by the broker when a new connection is created. -
consumerCreated
Intercept after a consumer is created.- Parameters:
cnx- client Connectionconsumer- Consumer objectmetadata- A map of metadata
-
messageProduced
default void messageProduced(ServerCnx cnx, Producer producer, long startTimeNs, long ledgerId, long entryId, Topic.PublishContext publishContext) Intercept after a message is produced.- Parameters:
cnx- client Connectionproducer- Producer objectpublishContext- Publish Context
-
messageDispatched
default void messageDispatched(ServerCnx cnx, Consumer consumer, long ledgerId, long entryId, io.netty.buffer.ByteBuf headersAndPayload) Intercept after a message is dispatched to consumer.- Parameters:
cnx- client Connectionconsumer- Consumer objectledgerId- Ledger IDentryId- Entry IDheadersAndPayload- Data
-
messageAcked
default void messageAcked(ServerCnx cnx, Consumer consumer, org.apache.pulsar.common.api.proto.CommandAck ackCmd) Intercept after a message ack is processed.- Parameters:
cnx- client ConnectionackCmd- Command object
-
txnOpened
Intercept when a transaction begins.- Parameters:
tcId- Transaction Coordinator IdtxnID- Transaction ID
-
txnEnded
Intercept when a transaction ends.- Parameters:
txnID- Transaction IDtxnAction- Transaction Action
-
onPulsarCommand
void onPulsarCommand(org.apache.pulsar.common.api.proto.BaseCommand command, ServerCnx cnx) throws org.apache.pulsar.common.intercept.InterceptException Called by the broker while new command incoming.- Throws:
org.apache.pulsar.common.intercept.InterceptException
-
onConnectionClosed
Called by the broker while connection closed. -
onWebserviceRequest
void onWebserviceRequest(javax.servlet.ServletRequest request) throws IOException, javax.servlet.ServletException, org.apache.pulsar.common.intercept.InterceptException Called by the web service while new request incoming.- Throws:
IOExceptionjavax.servlet.ServletExceptionorg.apache.pulsar.common.intercept.InterceptException
-
onWebserviceResponse
void onWebserviceResponse(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response) throws IOException, javax.servlet.ServletException Intercept the webservice response before send to client.- Throws:
IOExceptionjavax.servlet.ServletException
-
onFilter
default void onFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws IOException, javax.servlet.ServletException The interception of web processing, as same as `Filter.onFilter`. So In this method, we must call `chain.doFilter` to continue the chain.- Throws:
IOExceptionjavax.servlet.ServletException
-
initialize
Initialize the broker interceptor.- Throws:
Exception- when fail to initialize the broker interceptor.
-
close
void close()Close this broker interceptor.- Specified by:
closein interfaceAutoCloseable
-