PlayFramework2.2でscalaのRedisクライアントbrandoを使用する際にはちょっと注意が必要です。
brando1.0はakka2.3対応らしく、Play2.2ではまだakka2.2の対応となっているためそのままでは動きません。
仕方がないのでbrando0.3にバージョンを落として使用します。
また前回のサンプルだと、キーに値がない場合にはエラーになってしまいます。
そこでbrando0.3を少し改造します
- brand.Brando.scala
case Tcp.Received(data) ⇒ parseReply(data) { reply ⇒ reply match { case Some(List(Some(x: ByteString), Some(channel: ByteString), Some(message: ByteString))) if (x.utf8String == "message") ⇒ val pubSubMessage = PubSubMessage(channel.utf8String, message.utf8String) getSubscribers(channel).map { x ⇒ x ! pubSubMessage } //ここから case None => requesterQueue.dequeue ! Option(ByteString("")) //ここまで追加 case _ ⇒ requesterQueue.dequeue ! (reply match { case Some(failure) if failure.isInstanceOf[Status.Failure] ⇒ failure case success ⇒ success }) } }
これで使いやすくなりました