Node.js 发布/子频道的订阅服务器数和超时
目前正在使用多进程/多主机nodeJS应用程序,我面临一个问题,需要您的帮助 我的应用程序由进程组成,每个进程可以承载多个独特的作业。我必须实时知道作业当前是否在我的系统上运行 以下是我当前的解决方案:Node.js 发布/子频道的订阅服务器数和超时,node.js,redis,node-redis,Node.js,Redis,Node Redis,目前正在使用多进程/多主机nodeJS应用程序,我面临一个问题,需要您的帮助 我的应用程序由进程组成,每个进程可以承载多个独特的作业。我必须实时知道作业当前是否在我的系统上运行 以下是我当前的解决方案: 每个作业都订阅一个频道“job.job_UUID” 如果进程想知道某个作业当前是否正在运行,我会按“job.job_UUID”并检查订户数量。如果1=正常,则此作业正在运行,如果0未运行 除了出现网络问题外,此解决方案工作得非常好。这可能是因为Redis pub/sub没有超时: Note
- 每个作业都订阅一个频道“job.job_UUID”
- 如果进程想知道某个作业当前是否正在运行,我会按“job.job_UUID”并检查订户数量。如果1=正常,则此作业正在运行,如果0未运行
Note that the timeout only applies to number clients and it **does not apply** to Pub/Sub clients, since a Pub/Sub connection is a push style connection so a client that is idle is the norm.
Redis似乎保留了ghost订户,当我发布到某个频道时,它会返回1个订户,但它并不真实存在
你有办法处理这个案子吗
ps:我以前的解决方案是:
- 每个作业在redis中设置一个键“job_UUID”,TTL设置为5s
- TTL由每个作业每秒更新一次
- 要检查作业是否存在,我只需检查“job_UUID”键是否存在 问题是它不是实时的