Redis订阅julia脚本无效

时间:2016-04-13 08:30:25

标签: redis julia publish-subscribe

我正在使用Julia v0.4.5并使用这个简单的julia脚本来订阅redis频道:

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运行)?

1 个答案:

答案 0 :(得分:2)

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

while (true)
  sleep(1)
end

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