订阅频道时StackExchange.Redis客户端是否受到限制?
我想使用StackExchange.Redis开发一个发布/订阅消息队列 在StackExchange.Redis文档中指定: -数据不通过发布/订阅发送;发布/订阅API仅用于通知工人检查更多工作 因此,我理解,一旦订阅的工作人员通过发布/订阅检测到通知,我可能需要使用其他redis操作(如LPOP)来检查工作 但是,Redis参考文件规定: 一旦客户端进入订阅状态,它就不应该 发出除附加SUBSCRIBE、PSUSCRIBE、, 取消订阅和取消订阅命令 使用StackExchange.Redis,我应该在订阅处理程序中创建另一个多路复用器来发出LPOP之类的命令吗 是否可以为Subscribe和其他命令共享同一个多路复用器订阅频道时StackExchange.Redis客户端是否受到限制?,redis,publish-subscribe,stackexchange.redis,Redis,Publish Subscribe,Stackexchange.redis,我想使用StackExchange.Redis开发一个发布/订阅消息队列 在StackExchange.Redis文档中指定: -数据不通过发布/订阅发送;发布/订阅API仅用于通知工人检查更多工作 因此,我理解,一旦订阅的工作人员通过发布/订阅检测到通知,我可能需要使用其他redis操作(如LPOP)来检查工作 但是,Redis参考文件规定: 一旦客户端进入订阅状态,它就不应该 发出除附加SUBSCRIBE、PSUSCRIBE、, 取消订阅和取消订阅命令 使用StackExchange.Red
当我的员工收到检查工作的通知时,是否应该取消订阅?您是否尝试使用共享多路复用器 不,只使用一个ConnectionMultiplexer,订阅您想要的内容并使用它做其他事情绝对没有问题,就像Stackexchange一样。Redis客户端在幕后为您做所有事情。它实际上在内部处理订户的新连接 也就是说,不,您不必每次都创建一个新的多路复用器,也不必发出任何其他命令来使用订阅服务器 只需创建一个新订户
ISubscriber sub = redis.GetSubscriber();
然后订阅你想要的任何东西
sub.Subscribe("messages", (channel, message) => {
Console.WriteLine((string)message);
});
或者发送消息
sub.Publish("messages", "hello");
正如在中所解释的,我知道我可以使用一个多路复用器订阅多个通道,但是如果我想使用同一个ConnectionMultiplexer执行其他Redis操作,而不是处理程序中的Console.WriteLine呢?Redis docs声明我不应该这样做,因为处于订阅状态的客户端不应该发出更多命令。StackExchange.Redis是否免于此限制?我回答得不够清楚吗?你可以用一个多路复用器来处理任何事情,是的。你不必再创建一个。。。到目前为止你都试过了吗?