the-algorithm/home-mixer/server/src/main/scala/com/twitter/home_mixer/module/ClientSentImpressionsPublisherModule.scala
twitter-team ef4c5eb65e Twitter Recommendation Algorithm
Please note we have force-pushed a new initial commit in order to remove some publicly-available Twitter user information. Note that this process may be required in the future.
2023-03-31 17:36:31 -05:00

49 lines
1.7 KiB
Scala

package com.twitter.home_mixer.module
import com.google.inject.Provides
import com.twitter.conversions.DurationOps._
import com.twitter.eventbus.client.EventBusPublisher
import com.twitter.eventbus.client.EventBusPublisherBuilder
import com.twitter.finagle.mtls.authentication.ServiceIdentifier
import com.twitter.finagle.stats.StatsReceiver
import com.twitter.inject.TwitterModule
import com.twitter.timelines.config.ConfigUtils
import com.twitter.timelines.config.Env
import com.twitter.timelines.impressionstore.thriftscala.PublishedImpressionList
import javax.inject.Singleton
object ClientSentImpressionsPublisherModule extends TwitterModule with ConfigUtils {
private val serviceName = "home-mixer"
@Singleton
@Provides
def providesClientSentImpressionsPublisher(
serviceIdentifier: ServiceIdentifier,
statsReceiver: StatsReceiver
): EventBusPublisher[PublishedImpressionList] = {
val env = serviceIdentifier.environment.toLowerCase match {
case "prod" => Env.prod
case "staging" => Env.staging
case "local" => Env.local
case _ => Env.devel
}
val streamName = env match {
case Env.prod => "timelinemixer_client_sent_impressions_prod"
case _ => "timelinemixer_client_sent_impressions_devel"
}
EventBusPublisherBuilder()
.clientId(clientIdWithScopeOpt(serviceName, env))
.serviceIdentifier(serviceIdentifier)
.streamName(streamName)
.statsReceiver(statsReceiver.scope("eventbus"))
.thriftStruct(PublishedImpressionList)
.tcpConnectTimeout(20.milliseconds)
.connectTimeout(100.milliseconds)
.requestTimeout(1.second)
.publishTimeout(1.second)
.build()
}
}