/** * Initializes a {@link SubscribingEventProcessor} as specified through this Builder. * * @return a {@link SubscribingEventProcessor} as specified through this Builder */ public SubscribingEventProcessor build() { return new SubscribingEventProcessor(this); }
private SubscribingEventProcessor subscribingEventProcessor(String name, Configuration conf, EventHandlerInvoker eventHandlerInvoker, Function<Configuration, SubscribableMessageSource<? extends EventMessage<?>>> messageSource) { return SubscribingEventProcessor.builder() .name(name) .eventHandlerInvoker(eventHandlerInvoker) .rollbackConfiguration(rollbackConfiguration(name)) .errorHandler(errorHandler(name)) .messageMonitor(messageMonitor(SubscribingEventProcessor.class, name)) .messageSource(messageSource.apply(conf)) .processingStrategy(DirectEventProcessingStrategy.INSTANCE) .build(); }
/** * Process the given messages. A Unit of Work must be created for this processing. * <p> * This implementation creates a Batching unit of work for the given batch of {@code eventMessages}. * * @param eventMessages The messages to process */ protected void process(List<? extends EventMessage<?>> eventMessages) { try { processInUnitOfWork(eventMessages, new BatchingUnitOfWork<>(eventMessages), Segment.ROOT_SEGMENT); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new EventProcessingException("Exception occurred while processing events", e); } }
@Test public void testRestartSubscribingEventProcessor() throws Exception { CountDownLatch countDownLatch = new CountDownLatch(2); doAnswer(invocation -> { countDownLatch.countDown(); return null; }).when(mockHandler).handle(any()); testSubject.start(); testSubject.shutDown(); testSubject.start(); eventBus.publish(EventTestUtils.createEvents(2)); assertTrue("Expected Handler to have received 2 published events", countDownLatch.await(5, TimeUnit.SECONDS)); } }
@Before public void setUp() { SimpleEventHandlerInvoker eventHandlerInvoker = SimpleEventHandlerInvoker.builder() .eventHandlers(this) .build(); eventProcessor = SubscribingEventProcessor.builder() .name("test") .eventHandlerInvoker(eventHandlerInvoker) .messageSource(eventBus) .build(); eventProcessor.start(); }
@Bean public EventProcessor externalListenersEventProcessor() { SubscribingEventProcessor eventProcessor = new SubscribingEventProcessor("externalListenersEventProcessor", new SimpleEventHandlerInvoker(executedTradesBroadcaster), eventStore); eventProcessor.start(); return eventProcessor; }
private EventProcessor buildSubscribingEventProcessor(String name, Configuration config, EventHandlerInvoker eventHandlerInvoker) { SubscribingEventProcessor subscribingEventProcessor = new SubscribingEventProcessor(name, eventHandlerInvoker, rollbackConfiguration.get(), subscribableMessageSourceBuilder .apply(config), processingStrategy .apply(config), errorHandler.get(), messageMonitor.get()); subscribingEventProcessor .registerInterceptor(new CorrelationDataInterceptor<>(config.correlationDataProviders())); return subscribingEventProcessor; }
@Override public PlatformInboundInstruction instruction() { EventProcessorInfo msg = EventProcessorInfo.newBuilder() .setProcessorName(processor.getName()) .setMode("Subscribing") .build(); return PlatformInboundInstruction .newBuilder() .setEventProcessorInfo(msg) .build(); } }
@After public void tearDown() { testSubject.shutDown(); eventBus.shutDown(); }
private SubscribingEventProcessor defaultEventProcessor(String name, Configuration conf, EventHandlerInvoker eventHandlerInvoker) { SubscribingEventProcessor eventProcessor = subscribingEventProcessor(name, conf, eventHandlerInvoker, Configuration::eventBus); eventProcessor.registerInterceptor(new CorrelationDataInterceptor<>(conf.correlationDataProviders())); return eventProcessor; }
@Override public PlatformInboundInstruction instruction() { EventProcessorInfo msg = EventProcessorInfo.newBuilder() .setProcessorName(processor.getName()) .setMode("Subscribing") .build(); return PlatformInboundInstruction .newBuilder() .setEventProcessorInfo(msg) .build(); } }
@After public void tearDown() { eventProcessor.shutDown(); while (CurrentUnitOfWork.isStarted()) { CurrentUnitOfWork.get().rollback(); } }
/** * Initializes a {@link SubscribingEventProcessor} as specified through this Builder. * * @return a {@link SubscribingEventProcessor} as specified through this Builder */ public SubscribingEventProcessor build() { return new SubscribingEventProcessor(this); }
@Before public void setUp() { mockHandler = mock(EventMessageHandler.class); eventHandlerInvoker = SimpleEventHandlerInvoker.builder().eventHandlers(mockHandler).build(); eventBus = EmbeddedEventStore.builder().storageEngine(new InMemoryEventStorageEngine()).build(); testSubject = SubscribingEventProcessor.builder() .name("test") .eventHandlerInvoker(eventHandlerInvoker) .messageSource(eventBus) .build(); }
/** * Process the given messages. A Unit of Work must be created for this processing. * <p> * This implementation creates a Batching unit of work for the given batch of {@code eventMessages}. * * @param eventMessages The messages to process */ protected void process(List<? extends EventMessage<?>> eventMessages) { try { processInUnitOfWork(eventMessages, new BatchingUnitOfWork<>(eventMessages), Segment.ROOT_SEGMENT); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new EventProcessingException("Exception occurred while processing events", e); } }
private SubscribingEventProcessor subscribingEventProcessor(String name, Configuration conf, EventHandlerInvoker eventHandlerInvoker, Function<Configuration, SubscribableMessageSource<? extends EventMessage<?>>> messageSource) { return new SubscribingEventProcessor(name, eventHandlerInvoker, getRollbackConfiguration(conf, name), messageSource.apply(conf), DirectEventProcessingStrategy.INSTANCE, getErrorHandler(conf, name), getMessageMonitor(conf, SubscribingEventProcessor.class, name)); }
private SubscribingEventProcessor subscribingEventProcessor(String name, Configuration conf, EventHandlerInvoker eventHandlerInvoker, Function<Configuration, SubscribableMessageSource<? extends EventMessage<?>>> messageSource) { return SubscribingEventProcessor.builder() .name(name) .eventHandlerInvoker(eventHandlerInvoker) .rollbackConfiguration(rollbackConfiguration(name)) .errorHandler(errorHandler(name)) .messageMonitor(messageMonitor(SubscribingEventProcessor.class, name)) .messageSource(messageSource.apply(conf)) .processingStrategy(DirectEventProcessingStrategy.INSTANCE) .build(); }
/** * Process the given messages. A Unit of Work must be created for this processing. * <p> * This implementation creates a Batching unit of work for the given batch of {@code eventMessages}. * * @param eventMessages The messages to process */ protected void process(List<? extends EventMessage<?>> eventMessages) { try { processInUnitOfWork(eventMessages, new BatchingUnitOfWork<>(eventMessages), Segment.ROOT_SEGMENT); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new EventProcessingException("Exception occurred while processing events", e); } }