/** * Initializes a {@link SimpleEventHandlerInvoker} as specified through this Builder. * * @return a {@link SimpleEventHandlerInvoker} as specified through this Builder */ public SimpleEventHandlerInvoker build() { return new SimpleEventHandlerInvoker(this); }
/** * Initializes a {@link SimpleEventHandlerInvoker} as specified through this Builder. * * @return a {@link SimpleEventHandlerInvoker} as specified through this Builder */ public SimpleEventHandlerInvoker build() { return new SimpleEventHandlerInvoker(this); }
@Bean public EventProcessor externalListenersEventProcessor() { SubscribingEventProcessor eventProcessor = new SubscribingEventProcessor("externalListenersEventProcessor", new SimpleEventHandlerInvoker(executedTradesBroadcaster), eventStore); eventProcessor.start(); return eventProcessor; }
@Override public void initialize(Configuration config) { selectors.sort(comparing(ProcessorSelector::getPriority).reversed()); this.config = config; Map<String, List<Object>> assignments = new HashMap<>(); eventHandlers.stream().map(Component::get).forEach(handler -> { String processor = selectors.stream().map(s -> s.select(handler)).filter(Optional::isPresent).map(Optional::get) .findFirst() .orElseGet(() -> defaultSelector.select(handler).orElseThrow(IllegalStateException::new)); assignments.computeIfAbsent(processor, k -> new ArrayList<>()).add(handler); }); onInit.forEach(h -> h.accept(config)); assignments.forEach((name, handlers) -> { config.eventProcessingConfiguration().registerHandlerInvoker(name, c -> new SimpleEventHandlerInvoker(handlers, c.parameterResolverFactory(), getListenerInvocationErrorHandler(c, name), getSequencingPolicy(c, name))); if (eventProcessorBuilders.containsKey(name)) { eventProcessorBuilders.get(name).accept(config, handlers); } interceptorsFor(config, name).forEach(i -> config.eventProcessingConfiguration() .registerHandlerInterceptor(name, c -> i)); }); }
private EventProcessor buildTrackingEventProcessor(Configuration conf, String name, List<?> handlers, Function<Configuration, TrackingEventProcessorConfiguration> config, Function<Configuration, StreamableMessageSource<TrackedEventMessage<?>>> source, Function<Configuration, SequencingPolicy<? super EventMessage<?>>> sequencingPolicy) { return new TrackingEventProcessor(name, new SimpleEventHandlerInvoker(handlers, conf.parameterResolverFactory(), getListenerInvocationErrorHandler(conf, name), sequencingPolicy.apply(conf)), source.apply(conf), tokenStore.getOrDefault( name, c -> c.getComponent(TokenStore.class, InMemoryTokenStore::new) ).apply(conf), conf.getComponent(TransactionManager.class, NoTransactionManager::instance), getMessageMonitor(conf, EventProcessor.class, name), RollbackConfigurationType.ANY_THROWABLE, getErrorHandler(conf, name), config.apply(conf)); }