the-algorithm/recos-injector/server/src/main/scala/com/twitter/recosinjector/event_processors/SocialWriteEventProcessor.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

34 lines
1.3 KiB
Scala

package com.twitter.recosinjector.event_processors
import com.twitter.finagle.mtls.authentication.ServiceIdentifier
import com.twitter.finagle.stats.StatsReceiver
import com.twitter.recosinjector.edges.{EventToMessageBuilder, UserUserEdge}
import com.twitter.recosinjector.publishers.KafkaEventPublisher
import com.twitter.scrooge.ThriftStructCodec
import com.twitter.socialgraph.thriftscala.WriteEvent
import com.twitter.util.Future
/**
* This processor listens to events from social graphs services. In particular, a major use case is
* to listen to user-user follow events.
*/
class SocialWriteEventProcessor(
override val eventBusStreamName: String,
override val thriftStruct: ThriftStructCodec[WriteEvent],
override val serviceIdentifier: ServiceIdentifier,
kafkaEventPublisher: KafkaEventPublisher,
userUserGraphTopic: String,
userUserGraphMessageBuilder: EventToMessageBuilder[WriteEvent, UserUserEdge]
)(
override implicit val statsReceiver: StatsReceiver)
extends EventBusProcessor[WriteEvent] {
override def processEvent(event: WriteEvent): Future[Unit] = {
userUserGraphMessageBuilder.processEvent(event).map { edges =>
edges.foreach { edge =>
kafkaEventPublisher.publish(edge.convertToRecosHoseMessage, userUserGraphTopic)
}
}
}
}