package org.gbif.occurrence.cli.delete.service; import org.gbif.common.messaging.DefaultMessagePublisher; import org.gbif.common.messaging.MessageListener; import org.gbif.occurrence.deleter.OccurrenceDeletionService; import org.gbif.occurrence.deleter.messaging.DeleteOccurrenceListener; import org.gbif.occurrence.persistence.api.OccurrenceKeyPersistenceService; import org.gbif.occurrence.persistence.api.OccurrencePersistenceService; import org.gbif.occurrence.persistence.guice.OccurrencePersistenceModule; import com.google.common.util.concurrent.AbstractIdleService; import com.google.inject.Guice; import com.google.inject.Injector; public class DeleterService extends AbstractIdleService { private final DeleterConfiguration config; private MessageListener listener; public DeleterService(DeleterConfiguration config) { this.config = config; } @Override protected void startUp() throws Exception { Injector inj = Guice.createInjector(new OccurrencePersistenceModule(config.hbase)); config.ganglia.start(); OccurrenceDeletionService occurrenceDeletionService = new OccurrenceDeletionService( inj.getInstance(OccurrencePersistenceService.class), inj.getInstance(OccurrenceKeyPersistenceService.class)); listener = new MessageListener(config.messaging.getConnectionParameters()); listener.listen(config.queueName, config.msgPoolSize, new DeleteOccurrenceListener(occurrenceDeletionService, new DefaultMessagePublisher(config.messaging.getConnectionParameters()))); } @Override protected void shutDown() throws Exception { if (listener != null) { listener.close(); } } }