本文整理汇总了Scala中com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessor类的典型用法代码示例。如果您正苦于以下问题:Scala IRecordProcessor类的具体用法?Scala IRecordProcessor怎么用?Scala IRecordProcessor使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了IRecordProcessor类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。
示例1: ContentApiFirehoseConsumer
//设置package包名称以及导入依赖的类
package com.gu.contentapi.firehose
import com.amazonaws.services.kinesis.clientlibrary.interfaces.{ IRecordProcessor, IRecordProcessorFactory }
import com.gu.contentapi.client.model.v1.Content
import com.gu.contentapi.firehose.client.StreamListener
import com.gu.contentapi.firehose.kinesis.{ KinesisStreamReader, KinesisStreamReaderConfig, SingleEventProcessor }
import com.gu.crier.model.event.v1.EventPayload.UnknownUnionField
import com.gu.crier.model.event.v1.EventType.EnumUnknownEventType
import com.gu.crier.model.event.v1.{ Event, EventPayload, EventType }
import scala.concurrent.duration._
class ContentApiFirehoseConsumer(
val kinesisStreamReaderConfig: KinesisStreamReaderConfig,
val streamListener: StreamListener,
val filterProductionMonitoring: Boolean = false
) extends KinesisStreamReader {
val eventProcessorFactory = new IRecordProcessorFactory {
override def createProcessor(): IRecordProcessor =
new ContentApiEventProcessor(filterProductionMonitoring, kinesisStreamReaderConfig.checkpointInterval, kinesisStreamReaderConfig.maxCheckpointBatchSize, streamListener)
}
}
class ContentApiEventProcessor(filterProductionMonitoring: Boolean, override val checkpointInterval: Duration, override val maxCheckpointBatchSize: Int, streamListener: StreamListener) extends SingleEventProcessor[Event] {
val codec = Event
override protected def processEvent(event: Event): Unit = {
event.eventType match {
case EventType.Update | EventType.RetrievableUpdate =>
event.payload.foreach { payload =>
payload match {
case EventPayload.Content(content) => streamListener.contentUpdate(content)
case EventPayload.RetrievableContent(content) => streamListener.contentRetrievableUpdate(content)
case UnknownUnionField(e) => logger.warn(s"Received an unknown event payload $e. You should possibly consider updating")
}
}
case EventType.Delete =>
if (filterProductionMonitoring && event.payloadId.startsWith("production-monitoring")) {
// do nothing.
} else {
streamListener.contentTakedown(event.payloadId)
}
case EnumUnknownEventType(e) => logger.warn(s"Received an unknown event type $e")
}
}
}
示例2: TailMain
//设置package包名称以及导入依赖的类
import java.net.InetAddress
import java.util
import java.util.UUID
import com.amazonaws.auth.{AWSCredentialsProvider, BasicAWSCredentials}
import com.amazonaws.internal.StaticCredentialsProvider
import com.amazonaws.services.kinesis.clientlibrary.interfaces.{IRecordProcessor, IRecordProcessorCheckpointer, IRecordProcessorFactory}
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.{InitialPositionInStream, KinesisClientLibConfiguration, Worker}
import com.amazonaws.services.kinesis.clientlibrary.types.ShutdownReason
import com.amazonaws.services.kinesis.model.Record
object TailMain {
val accessKeyId = System.getProperty("accessKeyId")
val secretAccessKey = System.getProperty("secretAccessKey")
val appName = "kinesis-test-app"
val streamName = "kinesis-test-stream"
val initialPosition = "LATEST"
val region = "ap-northeast-1"
val idleTimeBetweenReadsInMillis = 3000
def main(args: Array[String]): Unit = {
val workerId = InetAddress.getLocalHost.getCanonicalHostName + ":" + UUID.randomUUID
val credentialsProvider: AWSCredentialsProvider = new StaticCredentialsProvider(new BasicAWSCredentials(accessKeyId, secretAccessKey))
val kclConf = new KinesisClientLibConfiguration(appName, streamName, credentialsProvider, workerId)
.withInitialPositionInStream(InitialPositionInStream.valueOf(initialPosition))
.withRegionName(region)
.withIdleTimeBetweenReadsInMillis(idleTimeBetweenReadsInMillis)
println(s"worker start. name:$appName stream:$streamName workerId:$workerId")
val tailWorker = new Worker(StreamTailProcessor.processorFactory, kclConf)
tailWorker.run()
}
}
class StreamTailProcessor extends IRecordProcessor{
override def shutdown(checkpointer: IRecordProcessorCheckpointer, reason: ShutdownReason): Unit = {
println(s"Shutting down record processor")
}
override def initialize(shardId: String): Unit = {
println(s"Initialising record processor for shard: $shardId")
}
override def processRecords(records: util.List[Record], checkpointer: IRecordProcessorCheckpointer): Unit = {
import scala.collection.JavaConversions._
records foreach { r =>
val line = new String(r.getData.array)
println(s"[stream-tail] $line")
}
}
}
object StreamTailProcessor {
def processorFactory = new IRecordProcessorFactory {
def createProcessor(): IRecordProcessor = new StreamTailProcessor
}
}