@Override public void handle(EventMessage<?> message, Segment segment) throws Exception { for (EventHandlerInvoker i : delegates) { if (i.canHandle(message, segment)) { i.handle(message, segment); } } }
@Test public void testUpdateActiveSegmentsWhenBatchIsEmpty() throws Exception { StreamableMessageSource<TrackedEventMessage<?>> stubSource = mock(StreamableMessageSource.class); testSubject = TrackingEventProcessor.builder() .name("test") .eventHandlerInvoker(eventHandlerInvoker) .messageSource(stubSource) .tokenStore(tokenStore) .transactionManager(NoTransactionManager.INSTANCE).build(); when(stubSource.openStream(any())).thenReturn(new StubTrackingEventStream(0, 1, 2, 5)); doReturn(true, false).when(eventHandlerInvoker).canHandle(any(), any()); List<TrackingToken> trackingTokens = new CopyOnWriteArrayList<>(); doAnswer(i -> { trackingTokens.add(i.<TrackedEventMessage>getArgument(0).trackingToken()); return null; }).when(eventHandlerInvoker).handle(any(), any()); testSubject.start(); // give it a bit of time to start Thread.sleep(200); EventTrackerStatus eventTrackerStatus = testSubject.processingStatus().get(0); assertTrue(eventTrackerStatus.isCaughtUp()); GapAwareTrackingToken expectedToken = GapAwareTrackingToken.newInstance(5, asList(3L, 4L)); TrackingToken lastToken = eventTrackerStatus.getTrackingToken(); assertTrue(lastToken.covers(expectedToken)); }
return new DefaultInterceptorChain<>(unitOfWork, interceptors, m -> { try { eventHandlerInvoker.handle(m, segment); monitorCallback.reportSuccess(); return null;
/** * Handle the given {@code message}, regardless of any Segmentation of processing. * * @param message The message to handle * @throws Exception when an exception occurs while handling the message * @deprecated Callers should use {@link #handle(EventMessage, Segment)} instead */ @Deprecated default void handle(EventMessage<?> message) throws Exception { handle(message, Segment.ROOT_SEGMENT); }
@Override public void handle(EventMessage<?> message, Segment segment) throws Exception { for (EventHandlerInvoker i : delegates) { if (i.canHandle(message, segment)) { i.handle(message, segment); } } }
@Override public void handle(EventMessage<?> message, Segment segment) throws Exception { for (EventHandlerInvoker i : delegates) { if (i.canHandle(message, segment)) { i.handle(message, segment); } } }
return new DefaultInterceptorChain<>(unitOfWork, interceptors, m -> { try { eventHandlerInvoker.handle(m, segment); monitorCallback.reportSuccess(); return null;
return new DefaultInterceptorChain<>(unitOfWork, interceptors, m -> { try { eventHandlerInvoker.handle(m, segment); monitorCallback.reportSuccess(); return null;