List of usage examples for com.google.common.util.concurrent AbstractScheduledService AbstractScheduledService
protected AbstractScheduledService()
From source file:dk.dma.ais.view.AisViewDaemon.java
@Override protected void runDaemon(Injector injector) throws Exception { // Tracking of live data final TargetTracker targetTracker = new TargetTracker(); // A cache manager where caches can be held and retrieved final CacheManager cacheManager = new CacheManager(); // Setup the readers AisReaderGroup g = AisReaders.createGroup("AisView", sources == null ? Collections.<String>emptyList() : sources); AisReaders.manageGroup(g);//from w ww . j av a 2 s .co m // A job manager that takes care of tracking ongoing jobs final JobManager jobManager = new JobManager(); // Setup the backup process // Files.createDirectories(backup); backup.mkdirs(); if (!backup.isDirectory()) { throw new IOException("Unable to create directories for " + backup); } start(new TargetTrackerFileBackupService(targetTracker, backup.toPath())); // start tracking targetTracker.readFromStream(g.stream()); //target tracking cleanup service start(new AbstractScheduledService() { @Override protected Scheduler scheduler() { return Scheduler.newFixedDelaySchedule(1, 10, TimeUnit.MINUTES); } @Override protected void runOneIteration() throws Exception { final Date satellite = new Date(new Date().getTime() - (1000 * 60 * 60 * 48)); final Date live = new Date(new Date().getTime() - (1000 * 60 * 60 * 12)); targetTracker.removeAll(new BiPredicate<AisPacketSource, TargetInfo>() { @Override public boolean test(AisPacketSource t, TargetInfo u) { switch (t.getSourceType()) { case SATELLITE: return !u.hasPositionInfo() || new Date(u.getPositionTimestamp()).before(satellite); default: return !u.hasPositionInfo() || new Date(u.getPositionTimestamp()).before(live); } } }); } }); //target cleanup missing static data start(new AbstractScheduledService() { @Override protected Scheduler scheduler() { return Scheduler.newFixedDelaySchedule(1, 24, TimeUnit.HOURS); } @Override protected void runOneIteration() throws Exception { targetTracker.removeAll(new BiPredicate<AisPacketSource, TargetInfo>() { @Override public boolean test(AisPacketSource t, TargetInfo u) { return !u.hasStaticInfo(); } }); } }); start(g.asService()); // Start Ais Store Connection CassandraConnection con = null; if (!noCassandra && !cassandraSeeds.isEmpty()) { con = start(CassandraConnection.create("aisdata", cassandraSeeds)); LOG.info("Connected to Cassandra cluster " + con.getSession().getCluster().getClusterName()); } else { LOG.warn("Not connected to any cassandra cluster."); } WebServer ws = new WebServer(port); ws.getContext().setAttribute(AbstractResource.CONFIG, AbstractResource.create(g, con, targetTracker, cacheManager, jobManager)); ws.start(); LOG.info("AisView started"); ws.join(); }
From source file:com.dssmp.agent.tailing.FileTailer.java
public FileTailer(AgentContext agentContext, FileFlow<R> flow, SourceFileTracker fileTracker, AsyncPublisherService<R> publisher, IParser<R> parser, FileCheckpointStore checkpoints) throws IOException { super();// www . ja v a 2 s . c o m this.agentContext = agentContext; this.flow = flow; this.serviceName = super.serviceName() + "[" + this.flow.getId() + "]"; this.checkpoints = checkpoints; this.publisher = publisher; this.parser = parser; this.fileTracker = new SourceFileTracker(this.agentContext, this.flow); this.minTimeBetweenFilePollsMillis = flow.minTimeBetweenFilePollsMillis(); this.maxTimeBetweenFileTrackerRefreshMillis = flow.maxTimeBetweenFileTrackerRefreshMillis(); this.metricsEmitter = new AbstractScheduledService() { @Override protected void runOneIteration() throws Exception { FileTailer.this.emitStatus(); } @Override protected Scheduler scheduler() { return Scheduler.newFixedRateSchedule( FileTailer.this.agentContext.logStatusReportingPeriodSeconds(), FileTailer.this.agentContext.logStatusReportingPeriodSeconds(), TimeUnit.SECONDS); } @Override protected String serviceName() { return FileTailer.this.serviceName() + ".MetricsEmitter"; } @Override protected void shutDown() throws Exception { LOGGER.debug("{}: shutting down...", serviceName()); // Emit status one last time before shutdown FileTailer.this.emitStatus(); super.shutDown(); } }; }
From source file:com.amazon.kinesis.streaming.agent.Agent.java
public Agent(AgentContext agentContext) { this.logger = Logging.getLogger(Agent.class); this.agentContext = agentContext; this.sendingExecutor = getSendingExecutor(agentContext); this.checkpoints = new SQLiteFileCheckpointStore(agentContext); this.heartbeat = new HeartbeatService(this.agentContext, 1, TimeUnit.SECONDS) { @Override//from w w w.jav a 2 s .c o m protected Object heartbeat(AgentContext agent) { return Agent.this.heartbeat(agent); } @Override protected String serviceName() { return getClass().getSimpleName() + "[" + state().toString() + "]"; } }; this.metricsEmitter = new AbstractScheduledService() { @Override protected void runOneIteration() throws Exception { Agent.this.emitStatus(); } @Override protected Scheduler scheduler() { return Scheduler.newFixedRateSchedule(Agent.this.agentContext.logStatusReportingPeriodSeconds(), Agent.this.agentContext.logStatusReportingPeriodSeconds(), TimeUnit.SECONDS); } @Override protected String serviceName() { return Agent.this.serviceName() + ".MetricsEmitter"; } @Override protected void shutDown() throws Exception { logger.debug("{}: shutting down...", serviceName()); // Emit status one last time before shutdown Agent.this.emitStatus(); super.shutDown(); } }; this.name = getClass().getSimpleName(); }
From source file:com.dopsun.msg4j.o2m.impl.O2mServerImpl.java
O2mServerImpl(Transport transport, O2mServerConfiguration config)
throws TransportException, O2mServiceException {
Objects.requireNonNull(transport);
Objects.requireNonNull(config);
Objects.requireNonNull(config.getServerId());
Objects.requireNonNull(config.getSessionIdSupplier());
Objects.requireNonNull(config.getHeartbeatInterval());
Objects.requireNonNull(config.getSystemSubject());
Objects.requireNonNull(config.getRequestSubject());
Objects.requireNonNull(config.getPublishSubjectProducer());
Objects.requireNonNull(config.getSessionSubjectProducer());
Objects.requireNonNull(config.getRequestHandler());
Objects.requireNonNull(config.getSnapshotProvider());
this.transport = transport;
this.serverId = config.getServerId();
this.sessionId = config.getSessionIdSupplier().get();
this.heartbeatInterval = config.getHeartbeatInterval();
this.requestHandler = config.getRequestHandler();
this.snapshotProvider = config.getSnapshotProvider();
this.sessionSubjectProducer = config.getSessionSubjectProducer();
this.publishSubjectProducer = config.getPublishSubjectProducer();
this.systemTopic = transport.createTopic(config.getSystemSubject(), ProducerMode.NON_PERSISTENT,
ConsumerMode.NO_ACK);/*from www . j a v a 2s . co m*/
this.systemPublisher = new ChannelSystemPublisher<>(sessionId, (msg) -> {
try {
transport.publish(systemTopic, msg);
} catch (Exception e) {
o2mServerEvents.onPublishSystemFailed(msg, e);
}
return /* Void */ null;
});
/** @formatter:off */
ImmutableMap.Builder<String, ServerRequestHandler> builder = ImmutableMap.builder();
builder.put(O2mMessages.Messages.CLIENT_CONNECT_REQUEST, new ServerClientConnectRequestHandler(this));
builder.put(O2mMessages.Messages.CLIENT_DISCONNECT_REQUEST, new ServerClientDisconnectRequestHandler(this));
builder.put(O2mMessages.Messages.USER_REQUEST, new ServerUserRequestHandler(this));
builder.put(O2mMessages.Messages.SUBSCRIBE_REQUEST, new ServerSubscribeRequestHandler(this));
systemRequestHandlers = builder.build();
/** @formatter:on */
TransportTopic requestTopic = transport.createTopic(config.getRequestSubject(), ProducerMode.NON_PERSISTENT,
ConsumerMode.NO_ACK);
TransportSubscriberSettings requestSettings = TransportSubscriberSettings.create();
requestSubscription = transport.subscribe(requestTopic, requestSettings, this::onRequestMessage);
comareAndSetState(O2mServerState.INITIALIZING, O2mServerState.STARTING);
comareAndSetState(O2mServerState.STARTING, O2mServerState.ACTIVE);
systemPublisher.sendServerStartedNotification(serverId, version);
heartbeatPublishService = new AbstractScheduledService() {
@Override
protected Scheduler scheduler() {
return Scheduler.newFixedRateSchedule(heartbeatInterval.toMillis(), heartbeatInterval.toMillis(),
TimeUnit.MILLISECONDS);
}
@Override
protected void runOneIteration() throws Exception {
long stamp = stateLock.readLock();
try {
if (state.get().equals(O2mServerState.ACTIVE)) {
ServerClientHeartbeatWriter writer = O2mMessages.newServerClientHeartbeat();
try {
systemPublisher.syncPublish(writer.getMessage());
} catch (Exception e) {
o2mServerEvents.onPublishHeartbeatFailed(e);
}
}
} finally {
stateLock.unlockRead(stamp);
}
}
};
heartbeatPublishService.startAsync();
}