
dk.danskebank.markets.event.routing.EventRouter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of event-router Show documentation
Show all versions of event-router Show documentation
Efficient routing of events with a DSL for providing a concise overview.
package dk.danskebank.markets.event.routing;
import dk.danskebank.markets.event.processing.Dispatcher;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.val;
import org.apache.logging.log4j.Level;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.*;
import static java.util.Objects.requireNonNull;
/**
* Create an {@code EventRouter.Builder} or {@code EventRouter.BreadthFirstBuilder} to build the {@code EventRouter}.
*
*
Example:
*
{@code
* Dispatcher eventRouter = new EventRouter.Builder()
* .route( Start.class).to(priceHandler, tradeHandler)
* .route( Stop.class).to(tradeHandler, priceHandler)
* .route(NewTrade.class).to(tradeHandler)
* .route(NewPrice.class).to(priceHandler)
* .route( Tick.class).to(priceHandler)
* .build();
* }
*
*/
public abstract class EventRouter implements Dispatcher {
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
private static class DepthFirst extends EventRouter {
private final Dispatcher dispatcher;
@Override public void dispatch(Object event) {
dispatcher.dispatch(event);
}
}
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
private static class BreadthFirst extends EventRouter {
private final Dispatcher dispatcher;
private final Queue
© 2015 - 2025 Weber Informatics LLC | Privacy Policy