我在一个express应用程序中使用redis。我的应用程序是流的发布者和使用者,使用一个redis连接(redis.createclient)。我有一个关于管理永久订阅的最佳方法的问题(使用xreadgroup)。目前我正在这样做:
const readStream = () => xreadgroup('GROUP' appId, consumerId, 'BLOCK', 1, 'COUNT', 1, 'STREAMS' key, '>')
.then(handleData)
.then(() => setImmeadiate(readStream));
哪里 xreadgroup
只是node redis的一个预期版本 xreadgroup
.
我的问题是,block的恰当用法是什么?如果我无限期或长时间阻止,那么我的客户机将无法发布任何消息(使用 xadd
)直到它被解除阻塞,或者阻塞超时。因为我必须使用某种循环/递归来继续读取事件, BLOCK
似乎是相当不必要的;我可以把它关掉吗?这是预期的用法吗?
同样,使用setimemadiate是合适的还是process.nexttick或异步循环更好?
节点redis中的文档很少,少数示例只是在阻塞之后读取一次消息,并且不在同一个客户机上生成/使用。
暂无答案!
目前还没有任何答案,快来回答吧!