redis streams:如何管理永久订阅和阻止行为?

7qhs6swi  于 2021-06-09  发布在  Redis
关注(0)|答案(0)|浏览(262)

我在一个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中的文档很少,少数示例只是在阻塞之后读取一次消息,并且不在同一个客户机上生成/使用。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题