feat(redis): use ManagedExecutor for asynchronous writeback processing
Build & Test (NowChessSystems) TeamCity build finished
Build & Test (NowChessSystems) TeamCity build finished
This commit is contained in:
+10
-4
@@ -8,6 +8,7 @@ import io.quarkus.runtime.Startup
|
|||||||
import jakarta.annotation.PostConstruct
|
import jakarta.annotation.PostConstruct
|
||||||
import jakarta.enterprise.context.ApplicationScoped
|
import jakarta.enterprise.context.ApplicationScoped
|
||||||
import jakarta.inject.Inject
|
import jakarta.inject.Inject
|
||||||
|
import org.eclipse.microprofile.context.ManagedExecutor
|
||||||
import org.jboss.logging.Logger
|
import org.jboss.logging.Logger
|
||||||
import scala.compiletime.uninitialized
|
import scala.compiletime.uninitialized
|
||||||
import scala.util.{Failure, Success, Try}
|
import scala.util.{Failure, Success, Try}
|
||||||
@@ -21,6 +22,7 @@ class GameWritebackStreamListener:
|
|||||||
var redis: RedisDataSource = uninitialized
|
var redis: RedisDataSource = uninitialized
|
||||||
@Inject var objectMapper: ObjectMapper = uninitialized
|
@Inject var objectMapper: ObjectMapper = uninitialized
|
||||||
@Inject var writebackService: GameWritebackService = uninitialized
|
@Inject var writebackService: GameWritebackService = uninitialized
|
||||||
|
@Inject var executor: ManagedExecutor = uninitialized
|
||||||
// scalafix:on
|
// scalafix:on
|
||||||
|
|
||||||
private val log = Logger.getLogger(classOf[GameWritebackStreamListener])
|
private val log = Logger.getLogger(classOf[GameWritebackStreamListener])
|
||||||
@@ -32,10 +34,14 @@ class GameWritebackStreamListener:
|
|||||||
case Failure(ex) =>
|
case Failure(ex) =>
|
||||||
log.errorf(ex, "Failed to parse game-writeback event: %s", json)
|
log.errorf(ex, "Failed to parse game-writeback event: %s", json)
|
||||||
case Success(event) =>
|
case Success(event) =>
|
||||||
Try(writebackService.writeBack(event)) match
|
executor.submit(
|
||||||
case Failure(ex) =>
|
new Runnable:
|
||||||
log.errorf(ex, "Failed to write back game event for gameId=%s", event.gameId)
|
def run(): Unit =
|
||||||
case Success(_) => ()
|
Try(writebackService.writeBack(event)) match
|
||||||
|
case Failure(ex) =>
|
||||||
|
log.errorf(ex, "Failed to write back game event for gameId=%s", event.gameId)
|
||||||
|
case Success(_) => (),
|
||||||
|
)
|
||||||
redis.pubsub(classOf[String]).subscribe("game-writeback", handler)
|
redis.pubsub(classOf[String]).subscribe("game-writeback", handler)
|
||||||
log.infof("Started listening to Writebacks")
|
log.infof("Started listening to Writebacks")
|
||||||
()
|
()
|
||||||
|
|||||||
Reference in New Issue
Block a user