mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
98 lines
4.4 KiB
Java
98 lines
4.4 KiB
Java
package com.commafeed;
|
|
|
|
import java.net.InetSocketAddress;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
import org.hibernate.SessionFactory;
|
|
|
|
import com.codahale.metrics.MetricFilter;
|
|
import com.codahale.metrics.MetricRegistry;
|
|
import com.codahale.metrics.graphite.Graphite;
|
|
import com.codahale.metrics.graphite.GraphiteReporter;
|
|
import com.commafeed.CommaFeedConfiguration.ApplicationSettings;
|
|
import com.commafeed.CommaFeedConfiguration.CacheType;
|
|
import com.commafeed.backend.cache.CacheService;
|
|
import com.commafeed.backend.cache.NoopCacheService;
|
|
import com.commafeed.backend.cache.RedisCacheService;
|
|
import com.commafeed.backend.favicon.AbstractFaviconFetcher;
|
|
import com.commafeed.backend.favicon.DefaultFaviconFetcher;
|
|
import com.commafeed.backend.favicon.FacebookFaviconFetcher;
|
|
import com.commafeed.backend.favicon.YoutubeFaviconFetcher;
|
|
import com.commafeed.backend.task.DemoAccountCleanupTask;
|
|
import com.commafeed.backend.task.EntriesExceedingFeedCapacityCleanupTask;
|
|
import com.commafeed.backend.task.OldEntriesCleanupTask;
|
|
import com.commafeed.backend.task.OldStatusesCleanupTask;
|
|
import com.commafeed.backend.task.OrphanedContentsCleanupTask;
|
|
import com.commafeed.backend.task.OrphanedFeedsCleanupTask;
|
|
import com.commafeed.backend.task.ScheduledTask;
|
|
import com.commafeed.backend.urlprovider.FeedURLProvider;
|
|
import com.commafeed.backend.urlprovider.InPageReferenceFeedURLProvider;
|
|
import com.commafeed.backend.urlprovider.YoutubeFeedURLProvider;
|
|
import com.google.inject.AbstractModule;
|
|
import com.google.inject.Provides;
|
|
import com.google.inject.multibindings.Multibinder;
|
|
|
|
import lombok.Getter;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
@RequiredArgsConstructor
|
|
@Slf4j
|
|
public class CommaFeedModule extends AbstractModule {
|
|
|
|
@Getter(onMethod = @__({ @Provides }))
|
|
private final SessionFactory sessionFactory;
|
|
|
|
@Getter(onMethod = @__({ @Provides }))
|
|
private final CommaFeedConfiguration config;
|
|
|
|
@Getter(onMethod = @__({ @Provides }))
|
|
private final MetricRegistry metrics;
|
|
|
|
@Override
|
|
protected void configure() {
|
|
CacheService cacheService = config.getApplicationSettings().getCache() == CacheType.NOOP ? new NoopCacheService()
|
|
: new RedisCacheService(config.getRedisPoolFactory().build());
|
|
log.info("using cache {}", cacheService.getClass());
|
|
bind(CacheService.class).toInstance(cacheService);
|
|
|
|
Multibinder<AbstractFaviconFetcher> faviconMultibinder = Multibinder.newSetBinder(binder(), AbstractFaviconFetcher.class);
|
|
faviconMultibinder.addBinding().to(YoutubeFaviconFetcher.class);
|
|
faviconMultibinder.addBinding().to(FacebookFaviconFetcher.class);
|
|
faviconMultibinder.addBinding().to(DefaultFaviconFetcher.class);
|
|
|
|
Multibinder<FeedURLProvider> urlProviderMultibinder = Multibinder.newSetBinder(binder(), FeedURLProvider.class);
|
|
urlProviderMultibinder.addBinding().to(InPageReferenceFeedURLProvider.class);
|
|
urlProviderMultibinder.addBinding().to(YoutubeFeedURLProvider.class);
|
|
|
|
Multibinder<ScheduledTask> taskMultibinder = Multibinder.newSetBinder(binder(), ScheduledTask.class);
|
|
taskMultibinder.addBinding().to(OldStatusesCleanupTask.class);
|
|
taskMultibinder.addBinding().to(EntriesExceedingFeedCapacityCleanupTask.class);
|
|
taskMultibinder.addBinding().to(OldEntriesCleanupTask.class);
|
|
taskMultibinder.addBinding().to(OrphanedFeedsCleanupTask.class);
|
|
taskMultibinder.addBinding().to(OrphanedContentsCleanupTask.class);
|
|
taskMultibinder.addBinding().to(DemoAccountCleanupTask.class);
|
|
|
|
ApplicationSettings settings = config.getApplicationSettings();
|
|
|
|
if (settings.isGraphiteEnabled()) {
|
|
final String graphitePrefix = settings.getGraphitePrefix();
|
|
final String graphiteHost = settings.getGraphiteHost();
|
|
final int graphitePort = settings.getGraphitePort();
|
|
final int graphiteInterval = settings.getGraphiteInterval();
|
|
|
|
log.info("Graphite Metrics will be sent to host={}, port={}, prefix={}, interval={}sec", graphiteHost, graphitePort,
|
|
graphitePrefix, graphiteInterval);
|
|
|
|
final Graphite graphite = new Graphite(new InetSocketAddress(graphiteHost, graphitePort));
|
|
final GraphiteReporter reporter = GraphiteReporter.forRegistry(metrics)
|
|
.prefixedWith(graphitePrefix)
|
|
.convertRatesTo(TimeUnit.SECONDS)
|
|
.convertDurationsTo(TimeUnit.MILLISECONDS)
|
|
.filter(MetricFilter.ALL)
|
|
.build(graphite);
|
|
reporter.start(graphiteInterval, TimeUnit.SECONDS);
|
|
}
|
|
}
|
|
}
|