Skip to content

Instantly share code, notes, and snippets.

View vigneshwaranr's full-sized avatar

Vigneshwaran Raveendran vigneshwaranr

View GitHub Profile
def send(message: Message): Future[Boolean] = {
if (isValid(message)) {
producer.send(message).recover({case _ => false})
} else {
Future.successful(false) // fixed :)
}
}
def send(message: Message): Future[Boolean] = {
if (isValid(message)) {
producer.send(message).recover({case _ => false})
} else {
Future(false) // this is not good
}
}
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.{ExecutionContext, Future}
class API(cacheService: CacheService, processor: Processor) {
def process(request: Request): Future[Response] = {
for {
dedupedRequest <- cacheService.isDuplicateRequest(request)
response <- processor.process(dedupedRequest)
_ = cacheService.setCacheForDeduplication(dedupedRequest)
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.{ExecutionContext, Future}
class API(cacheService: CacheService, processor: Processor) {
def process(request: Request): Future[Response] = {
for {
dedupedRequest <- cacheService.isDuplicateRequest(request)
response <- processor.process(dedupedRequest)
_ = cacheService.setCacheForDeduplication(dedupedRequest) // now unplugged from the flow
def executeOperation(): Future[Boolean] = {
someHeavyCPUOperation()
Future(anotherOperation())
}
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.{ExecutionContext, Future}
trait Request
trait Response
trait CacheService {
def myOwnEc: ExecutionContext
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.{ExecutionContext, Future}
trait Request
trait Response
trait CacheService {
def isDuplicateRequest(request: Request)(implicit ec: ExecutionContext): Future[Option[Request]]
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
trait WaterSupply {
def turnOn(): Future[Unit]
}
trait PowerPlant {
def waterSupply: WaterSupply
import scala.concurrent.Future
trait WaterSupply {
def turnOn(): Future[Unit]
}
trait PowerPlant {
def waterSupply: WaterSupply
def increaseVolumeControl(): Future[Boolean]
import scala.concurrent.duration.Duration
import scala.concurrent.{Await, Future}
trait AsyncJob {
def execute(): Future[Boolean]
}
class MyLongRunningJob(asyncJob: AsyncJob) extends Runnable {
override def run(): Unit = {
val result = Await.result(asyncJob.execute(), Duration.Inf)