Redis 在 julia 脚本中订阅不起作用

标签 redis julia publish-subscribe

我正在使用 Julia v0.4.5,并使用这个简单的 julia 脚本从 redis channel 订阅:

using Redis

subHandler(x) = print(x)
errHandler(err) = print(err)

redisConn = RedisConnection(host="127.0.0.1", port=6379, db=0)
flushall(redisConn)

subConn = open_subscription(redisConn, errHandler)
subscribe(subConn, "julia-channel", subHandler)

如果我在 Julia repl 中逐行输入此脚本,它会按预期工作。
但是,如果我将此代码放入脚本文件并从 shell 运行:

julia sub.jl

Julia 在几秒钟内退出,没有打印任何内容..
也许我应该将订阅放入某种线程或循环中(以保持 Julia 运行)?

最佳答案

受到 FGFW 和 DanielArndt 的启发,我刚刚找到了答案。
简而言之,在 subscribe() 之后,添加以下代码以保持 Julia 运行:

while (true)
  sleep(1)
end

说明:
根据 redis.jl 自述文件, subscribe() 生成一个后台例程来处理服务器发布事件。然而,在脚本模式下,julia 主线程(例程)在 subscribe() 之后退出,因此后台例程也被终止。 while - sleep 循环阻止主循环退出。
Repl 维护用户交互循环,因此我们不必手动循环。

关于Redis 在 julia 脚本中订阅不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36592752/

相关文章:

c# - Nservicebus 不在 msmq 中存储订阅者

node.js - nodejs/express 应用程序的翻译/本地化工作流程

apache-kafka - Kafka regex-topics/听多个主题的实际限制是什么

php - Zend 无法启动与 Redis 的 session

julia - General Registry 未能在 Julia 中更新

optimization - 使用 Inf 作为界限时,Optim.jl 单变量有界优化会混淆输出

matrix - 在 Julia 中,如何对稀疏矩阵进行列归一化?

design-patterns - 在高速公路的 pubsub 中获取初始值的设计模式

node.js - 可与 Node.js 一起用于向多个客户端发送数据的消息队列

spring - Redis BITOP 使用 Spring data Redis