the-algorithm/home-mixer/server/src/main/scala/com/twitter/home_mixer/module/ScribeEventPublisherModule.scala

78 lines
3.3 KiB
Scala

package com.twitter.home_mixer.module
import com.google.inject.Provides
import com.twitter.clientapp.{thriftscala => ca}
import com.twitter.home_mixer.param.HomeMixerInjectionNames.CandidateFeaturesScribeEventPublisher
import com.twitter.home_mixer.param.HomeMixerInjectionNames.CommonFeaturesScribeEventPublisher
import com.twitter.home_mixer.param.HomeMixerInjectionNames.MinimumFeaturesScribeEventPublisher
import com.twitter.inject.TwitterModule
import com.twitter.logpipeline.client.EventPublisherManager
import com.twitter.logpipeline.client.common.EventPublisher
import com.twitter.logpipeline.client.serializers.EventLogMsgTBinarySerializer
import com.twitter.logpipeline.client.serializers.EventLogMsgThriftStructSerializer
import com.twitter.timelines.suggests.common.poly_data_record.{thriftjava => pldr}
import com.twitter.timelines.timeline_logging.{thriftscala => tl}
import javax.inject.Named
import javax.inject.Singleton
object ScribeEventPublisherModule extends TwitterModule {
val ClientEventLogCategory = "client_event"
val ServedCandidatesLogCategory = "home_timeline_served_candidates_flattened"
val ScoredCandidatesLogCategory = "home_timeline_scored_candidates"
val ServedCommonFeaturesLogCategory = "tq_served_common_features_offline"
val ServedCandidateFeaturesLogCategory = "tq_served_candidate_features_offline"
val ServedMinimumFeaturesLogCategory = "tq_served_minimum_features_offline"
@Provides
@Singleton
def providesClientEventsScribeEventPublisher: EventPublisher[ca.LogEvent] = {
val serializer = EventLogMsgThriftStructSerializer.getNewSerializer[ca.LogEvent]()
EventPublisherManager.buildScribeLogPipelinePublisher(ClientEventLogCategory, serializer)
}
@Provides
@Singleton
@Named(CommonFeaturesScribeEventPublisher)
def providesCommonFeaturesScribeEventPublisher: EventPublisher[pldr.PolyDataRecord] = {
val serializer = EventLogMsgTBinarySerializer.getNewSerializer
EventPublisherManager.buildScribeLogPipelinePublisher(
ServedCommonFeaturesLogCategory,
serializer)
}
@Provides
@Singleton
@Named(CandidateFeaturesScribeEventPublisher)
def providesCandidateFeaturesScribeEventPublisher: EventPublisher[pldr.PolyDataRecord] = {
val serializer = EventLogMsgTBinarySerializer.getNewSerializer
EventPublisherManager.buildScribeLogPipelinePublisher(
ServedCandidateFeaturesLogCategory,
serializer)
}
@Provides
@Singleton
@Named(MinimumFeaturesScribeEventPublisher)
def providesMinimumFeaturesScribeEventPublisher: EventPublisher[pldr.PolyDataRecord] = {
val serializer = EventLogMsgTBinarySerializer.getNewSerializer
EventPublisherManager.buildScribeLogPipelinePublisher(
ServedMinimumFeaturesLogCategory,
serializer)
}
@Provides
@Singleton
def providesServedCandidatesScribeEventPublisher: EventPublisher[tl.ServedEntry] = {
val serializer = EventLogMsgThriftStructSerializer.getNewSerializer[tl.ServedEntry]()
EventPublisherManager.buildScribeLogPipelinePublisher(ServedCandidatesLogCategory, serializer)
}
@Provides
@Singleton
def provideScoredCandidatesScribeEventPublisher: EventPublisher[tl.ScoredCandidate] = {
val serializer = EventLogMsgThriftStructSerializer.getNewSerializer[tl.ScoredCandidate]()
EventPublisherManager.buildScribeLogPipelinePublisher(ScoredCandidatesLogCategory, serializer)
}
}