前回brandoを使用してRedisの値をGETできたので今回はSubscribeしてみます。
Redisサーバ側から値をプッシュし、それをPlayのWebsocketでブラウザ側に流すため用に特化しています
試行錯誤をかなりしましたが意外と単純でした。
ポイントは起動するクラスをActorとして作成し、PubSubMessageをReceiveするだけです
import akka.actor._ import akka.util._ import scala.concurrent._ import brando._ class MyPubSub extends Actor{ implicit val timeout= Timeout(5000) val system=ActorSystem("brando") val brando = system.actorOf(Brando("localhost", 6379,None,None)) brando ! Request("SUBSCRIBE","key") def receive={ case msg:PubSubMessage=>println("msg="+msg) case _ => } } object PubSub { def main(args: Array[String]): Unit = { val system=ActorSystem("a") system.actorOf(Props(new MyPubSub())) } }
これだけでした。