Scala Redis 中的 PubSub

Posted

技术标签:

【中文标题】Scala Redis 中的 PubSub【英文标题】:PubSub in Scala Redis 【发布时间】:2017-03-17 03:09:50 【问题描述】:

我是 Scala 和 Redis 世界的新手,我正在尝试做一些简单的事情:

我想订阅一个频道,以便在添加新密钥时收到通知(我的想法只是设置密钥并在添加了密钥的频道中发布)。

当我在网站上阅读时,scala-redis 是推荐版本中最新的,所以我决定使用它。

我在订阅部分遇到了一些问题。我有以下代码:

import com.redis._
val r = new RedisClient("localhost", 6379)
r.subscribe("modifications","modifications","subscribe")

我收到以下错误消息:

错误:特征 PubSub 中的方法订阅缺少参数;跟随 如果您想将其视为部分应用,则此方法带有 `_' 功能

我正在检查文档,函数如下所示:

def subscribe(channel: String, channels: String*)(fn: PubSubMessage => Any) 
    if (pubSub == true)  // already pubsub ing
      subscribeRaw(channel, channels: _*)
     else 
      pubSub = true
      subscribeRaw(channel, channels: _*)
      new Consumer(fn).start
    
  

说实话,我不知道自己做错了什么。如果有人可以帮助我提出一些想法,那就太好了。

谢谢

【问题讨论】:

【参考方案1】:

你需要提供一个函数来处理接收到的消息:

r.subscribe("modifications","modifications","subscribe") m => println(m) 

不幸的是,大部分文档都在代码中,但如果您查看 PubSubDemo 或 PubSubSpec 可能会有所帮助。

【讨论】:

这个api的文档确实很差。谢谢。

以上是关于Scala Redis 中的 PubSub的主要内容,如果未能解决你的问题,请参考以下文章

Redis Pubsub命令用法

Redis golang 客户端定期丢弃错误的 PubSub 连接 (EOF)

ruby redis_pubsub_demo.rb

Google PubSub 中的 PubSub.Subscriptions() 和 Topic.getSubscriptions() 有啥区别?

python 一个简短的脚本,用Python探索Redis pubsub函数

从 Memorystore Redis PubSub 消息触发 Cloud Run API