package org.gbif.occurrence.cli;
import org.gbif.common.messaging.MessageListener;
import org.gbif.occurrence.processor.FragmentProcessor;
import org.gbif.occurrence.processor.guice.OccurrenceProcessorModule;
import org.gbif.occurrence.processor.messaging.OccurrenceFragmentedListener;
import com.google.common.util.concurrent.AbstractIdleService;
import com.google.inject.Guice;
import com.google.inject.Injector;
public class FragmentProcessorService extends AbstractIdleService {
private final ProcessorCliConfiguration cfg;
private MessageListener listener;
public FragmentProcessorService(ProcessorCliConfiguration configuration) {
this.cfg = configuration;
}
@Override
protected void startUp() throws Exception {
Injector inj = Guice.createInjector(new OccurrenceProcessorModule(cfg));
cfg.ganglia.start();
listener = new MessageListener(cfg.messaging.getConnectionParameters());
listener.listen(cfg.primaryQueueName, cfg.msgPoolSize,
new OccurrenceFragmentedListener(inj.getInstance(FragmentProcessor.class)));
}
@Override
protected void shutDown() throws Exception {
if (listener != null) {
listener.close();
}
}
}