package org.myeslib.example.jdbi;
import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import org.apache.camel.CamelContext;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.SimpleRegistry;
import org.apache.camel.main.Main;
import org.myeslib.example.jdbi.modules.CamelModule;
import org.myeslib.example.jdbi.modules.DatabaseModule;
import org.myeslib.example.jdbi.modules.HazelcastModule;
import org.myeslib.example.jdbi.modules.InventoryItemModule;
import org.myeslib.example.jdbi.routes.JdbiConsumeCommandsRoute;
import org.myeslib.example.jdbi.routes.JdbiConsumeEventsRoute;
import org.myeslib.example.jdbi.routes.ReceiveCommandsAsJsonRoute;
import com.google.inject.Guice;
import com.google.inject.Injector;
@Slf4j
public class JdbiExample {
final Main main;
final SimpleRegistry registry;
final CamelContext context;
static int jettyMinThreads;
static int jettyMaxThreads;
static int dbPoolMinConnections;
static int dbPoolMaxConnections;
public static void main(String[] args) throws Exception {
log.info("starting...");
jettyMinThreads = args.length ==0 ? 10 : new Integer(args[0]);
jettyMaxThreads = args.length <=1 ? 100 : new Integer(args[1]);
dbPoolMinConnections = args.length <=2 ? 10 : new Integer(args[2]);
dbPoolMaxConnections = args.length <=3 ? 100 : new Integer(args[3]);
log.info("jettyMinThreads = {}", jettyMinThreads);
log.info("jettyMaxThreads = {}", jettyMaxThreads);
log.info("dbPoolMinConnections = {}", dbPoolMinConnections);
log.info("dbPoolMaxConnections = {}", dbPoolMaxConnections);
Injector injector = Guice.createInjector(new CamelModule(jettyMinThreads, jettyMaxThreads),
new DatabaseModule(dbPoolMinConnections, dbPoolMaxConnections),
new HazelcastModule(),
new InventoryItemModule());
JdbiExample example = injector.getInstance(JdbiExample.class);
example.main.run();
}
@Inject
JdbiExample(ReceiveCommandsAsJsonRoute receiveCommandsRoute,
JdbiConsumeCommandsRoute consumeCommandsRoute,
JdbiConsumeEventsRoute consumeEventsRoute) throws Exception {
main = new Main() ;
main.enableHangupSupport();
registry = new SimpleRegistry();
context = new DefaultCamelContext(registry);
context.addRoutes(receiveCommandsRoute);
context.addRoutes(consumeCommandsRoute);
context.addRoutes(consumeEventsRoute);
main.getCamelContexts().clear();
main.getCamelContexts().add(context);
main.setDuration(-1);
main.start();
}
}