Skip to content

Instantly share code, notes, and snippets.

View htimur's full-sized avatar

Timur Khamrakulov htimur

  • Germany
View GitHub Profile
@htimur
htimur / template.yaml
Created February 26, 2023 12:05
Kinesis consumer lambda example
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: AWS Kinesis Data Stream to AWS Lambda with Enhanced Fanout via a consumer
Resources:
# Define an AWS Kinesis Data Stream
KinesisStream:
Type: "AWS::Kinesis::Stream"
Properties:
ShardCount: 80
@htimur
htimur / setup.md
Created November 7, 2022 13:39
next-commerce presentation prep
@htimur
htimur / Main.scala
Created October 4, 2018 19:01
MongoDB Shard oplog tailing source creation
val shardOplogSources: Seq[Source[Document, NotUsed]] = shardService.getShards.map { shard =>
RestartSource.withBackoff(
minBackoff = 3.seconds,
maxBackoff = 30.seconds,
randomFactor = 0.2, // adds 20% "noise" to vary the intervals slightly
maxRestarts = 20 // limits the amount of restarts to 20
) { () =>
oplog.source(MongoClient(shard.uri))
}
}
@htimur
htimur / OplogService.scala
Created October 4, 2018 18:18
Alpakka mongo connector MongoSource
package htimur.services
import akka.NotUsed
import akka.stream.alpakka.mongodb.scaladsl.MongoSource
import akka.stream.scaladsl.Source
import com.mongodb.CursorType
import htimur.configs.MongoConstants
import htimur.models.OplogOperation
import org.mongodb.scala.bson.collection.immutable.Document
import org.mongodb.scala.model.Filters._
@htimur
htimur / build.sbt
Created October 3, 2018 21:14
mongo oplog tailing sbt build file
name := "MongoDB Replica Set oplog tailing with Akks Streams"
version := "1.0"
scalaVersion := "2.12.7"
libraryDependencies ++= Seq(
"ch.qos.logback" % "logback-classic" % "1.2.3",
"org.mongodb.scala" %% "mongo-scala-driver" % "2.4.2",
"com.typesafe.akka" %% "akka-stream" % "2.5.17"
@htimur
htimur / Main.scala
Created August 30, 2018 09:25
Example of extracting KinesisConsumer during Kinesis source creation for the WW-Digital/reactive-kinesis library
import akka.actor.{ActorRef, ActorSystem}
import akka.stream.scaladsl.Sink
import com.weightwatchers.reactive.kinesis.consumer.KinesisConsumer
import com.weightwatchers.reactive.kinesis.stream._
object Main extends App {
val sys = ActorSystem("kinesis-consumer-system")
var consumer = Option.empty[KinesisConsumer]
GET /admin/metrics com.kenshoo.play.metrics.MetricsController.metrics
-- Counters --------------------------------------------------------------------
controllers.HomeController.index.current
count = 1
-- Meters ----------------------------------------------------------------------
controllers.HomeController.index.meter
count = 1
mean rate = 0.25 events/second
1-minute rate = 0.00 events/second
5-minute rate = 0.00 events/second
@Singleton
class HomeController @Inject() extends Controller {
@Counted(monotonic = true)
@Timed
@Metered
def index = Action {
Ok(views.html.index("Your new application is ready."))
}
metrics {
jvm = false
logback = false
reporters = [
{
type: "console"
frequency: "10 seconds"
}
]