Class HandlerMonitor
- All Implemented Interfaces:
HandlerDecorator, HandlerInterceptor
-
Nested Class Summary
Nested classes/interfaces inherited from interface HandlerDecorator
HandlerDecorator.MergedDecoratorNested classes/interfaces inherited from interface HandlerInterceptor
HandlerInterceptor.InterceptedHandler, HandlerInterceptor.PreparedHandlerFunction, HandlerInterceptor.PreparedHandlerInterceptor, HandlerInterceptor.PreparedInterceptedHandler -
Field Summary
Fields inherited from interface HandlerDecorator
noOpFields inherited from interface HandlerInterceptor
defaultInterceptors -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected StringformatType(DeserializingMessage message, io.fluxzero.common.handling.HandlerInvoker invoker) interceptHandling(Function<DeserializingMessage, Object> function, io.fluxzero.common.handling.HandlerInvoker invoker) Intercepts the message handling logic.protected booleanlogMetrics(io.fluxzero.common.handling.HandlerInvoker invoker, HasMessage message) protected booleanmetricsDisabled(io.fluxzero.common.handling.HandlerInvoker invoker) prepare(io.fluxzero.common.handling.HandlerDescriptor handler) Prepares this interceptor for a specific handler method.protected voidpublishMetrics(io.fluxzero.common.handling.HandlerInvoker invoker, DeserializingMessage message, boolean exceptionalResult, Instant start, Object result) booleanIndicates whether this interceptor opts into the prepared, mergeable handler wrapper.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface HandlerDecorator
andThenMethods inherited from interface HandlerInterceptor
wrap
-
Constructor Details
-
HandlerMonitor
public HandlerMonitor()
-
-
Method Details
-
interceptHandling
public Function<DeserializingMessage, Object> interceptHandling(Function<DeserializingMessage, Object> function, io.fluxzero.common.handling.HandlerInvoker invoker) Description copied from interface:HandlerInterceptorIntercepts the message handling logic.The
functionparameter represents the next step in the handling chain— typically the actual message handler. Theinvokerprovides metadata and invocation logic for the underlying handler method.Within this method, an interceptor may:
- Modify the
DeserializingMessagebefore passing it to the handler - Bypass the handler entirely and return a value directly
- Wrap the result after the handler is invoked
Note: Interceptors may return a different
DeserializingMessage, but it must be compatible with a handler method in the same target class. If no suitable handler is found, an exception will be thrown.- Specified by:
interceptHandlingin interfaceHandlerInterceptor- Parameters:
function- the next step in the handler chain (typically the handler itself)invoker- the metadata and execution strategy for the actual handler method- Returns:
- a decorated function that wraps handling behavior
- Modify the
-
prepare
public HandlerInterceptor.PreparedHandlerInterceptor prepare(io.fluxzero.common.handling.HandlerDescriptor handler) Description copied from interface:HandlerInterceptorPrepares this interceptor for a specific handler method.The returned interceptor is cached and reused concurrently for invocations with the same stable handler metadata. Implementations may use this hook to resolve annotation- or signature-based policy once while keeping message-dependent decisions inside
HandlerInterceptor.PreparedHandlerInterceptor.interceptHandling(DeserializingMessage, HandlerDescriptor, BiFunction, HandlerInterceptor.PreparedHandlerFunction).The default adapter preserves the existing
HandlerInterceptor.interceptHandling(Function, HandlerInvoker)contract and deliberately disables the reusableHandlerMethodpath. Custom interceptors therefore retain their current behavior unless they explicitly opt into preparation.- Specified by:
preparein interfaceHandlerInterceptor- Parameters:
handler- stable metadata for the handler method- Returns:
- a thread-safe prepared interceptor
-
supportsPreparation
public boolean supportsPreparation()Description copied from interface:HandlerInterceptorIndicates whether this interceptor opts into the prepared, mergeable handler wrapper.The default is
false, preserving the exact wrapper behavior of existing custom interceptors. An interceptor should returntrueonly whenHandlerInterceptor.prepare(HandlerDescriptor)returns a thread-safe plan that fully represents its handling behavior. If a subclass overrides only the legacyHandlerInterceptor.interceptHandling(Function, HandlerInvoker)method, the legacy wrapper is retained automatically.- Specified by:
supportsPreparationin interfaceHandlerInterceptor- Returns:
truewhen this interceptor may be merged into a prepared wrapper
-
publishMetrics
protected void publishMetrics(io.fluxzero.common.handling.HandlerInvoker invoker, DeserializingMessage message, boolean exceptionalResult, Instant start, Object result) -
formatType
protected String formatType(DeserializingMessage message, io.fluxzero.common.handling.HandlerInvoker invoker) -
metricsDisabled
protected boolean metricsDisabled(io.fluxzero.common.handling.HandlerInvoker invoker) -
logMetrics
protected boolean logMetrics(io.fluxzero.common.handling.HandlerInvoker invoker, HasMessage message)
-