Skip to content

Instantly share code, notes, and snippets.

View krasserm's full-sized avatar

Martin Krasser krasserm

View GitHub Profile
@krasserm
krasserm / play-01.scala
Created February 23, 2012 08:30
JAXB-based XML and JSON APIs
object Application extends Controller with JaxbSupport {
val paths: String = // colon-separated list of packages containing JAXB-annotated classes ...
val config: JSONConfiguration = // ...
// can be used for JAXB-based JSON and XML processing
implicit val context = new JSONJAXBContext(config, paths)
...
}
@krasserm
krasserm / es-ext-01.scala
Last active December 12, 2015 00:18
Event sourcing and external servce integration (blog post snippets)
case class Order(id: Int = -1, details: String,
creditCardNumber: String,
creditCardValidation: Validation = Validation.Pending)
sealed trait Validation
object Validation {
case object Pending extends Validation
case object Success extends Validation
case object Failure extends Validation
}
@krasserm
krasserm / parwrite.scala
Created February 3, 2013 11:07
Journal parallel writes prototype
package example
import scala.concurrent._
import scala.concurrent.duration._
import akka.actor._
import akka.pattern.ask
import akka.util.Timeout
object Parwrite extends App {
@krasserm
krasserm / example1.scala
Last active December 17, 2015 23:58
Eventsourced processors in a parent-child relationship
import java.io.File
import scala.concurrent.duration._
import akka.actor._
import akka.util.Timeout
import org.eligosource.eventsourced.core._
import org.eligosource.eventsourced.journal.leveldb.LeveldbJournalProps
import akka.actor._
import akka.persistence._
object EventsourcingExample extends App {
class EventsourcedProcessor extends Processor {
var events: List[Any] = Nil
var awaitStack: List[Actor.Receive] = Nil
def receive = {
case Persistent(event, _) if recoveryRunning ⇒ update(event)
import java.nio.ByteBuffer
import java.util.concurrent.TimeUnit
import org.apache.kafka.clients._
import org.apache.kafka.common.metrics.{MetricConfig, Metrics, MetricsReporter}
import org.apache.kafka.common.network.Selector
import org.apache.kafka.common.protocol.ApiKeys
import org.apache.kafka.common.record.{CompressionType, MemoryRecords}
import org.apache.kafka.common.requests.{ProduceRequest, RequestSend}
import org.apache.kafka.common.utils.SystemTime
@krasserm
krasserm / BoundedMailboxDirectConsumer.scala
Created February 19, 2011 14:14
Akka consumer actors best practices
class BoundedMailboxDirectConsumer extends Actor with Consumer {
import akka.dispatch._
import akka.util.duration._
// Create a bounded mailbox for this consumer actor with a capacity of 10
self.dispatcher = Dispatchers.newThreadBasedDispatcher(self, 5, 100.milliseconds)
// instruct how the route should be customized during route creation (definition)
onRouteDefinition { rd: RouteDefinition =>
// on exception attempt max 3 redeliveries with a delay of 1000 ms
@krasserm
krasserm / akka-persistence-plugins.md
Last active March 27, 2017 10:13
Akka Persistence Plugins
@krasserm
krasserm / MonadTransformerExamples.scala
Created July 14, 2011 10:32
Scalaz 7 monad transformer examples
import scalaz._
import Scalaz._
object MonadTransformerExamples {
def main(args: Array[String]) = run
def run {
// ------------------------------------------------------
// Combined Option/Option
// ------------------------------------------------------