【发布时间】:2021-11-15 04:11:47
【问题描述】:
我正在尝试为 Redis 订阅编写一个频道模式,这样,当我的应用程序处于调试模式时,我订阅所有以 _dev 结尾的频道,但当不处于调试模式时,我订阅所有特别不以_dev结尾的频道。我的频道类似于:CommandChannel_<id> 或 CommandChannel_<id>_dev
我知道,根据文档,“所有 glob 样式的模式都是有效的”,所以我写了一个我觉得应该可以解决问题的模式:
string subBase = "CommandChannel_"
redisSubscription.SubscribeAsync(subBase + "*" + (DEBUG ? "_dev": "!(_dev)"), async (channel, message) =>
{
// Do stuff
}
我发现,在 DEBUG 模式下,我的订阅工作正常 - 我正确地“捕获”了与 CommandChannel_<id>_dev 模式匹配的任何频道上的所有消息。但是,当我将应用程序更改为不处于调试模式时,尽管肯定会发布到适当的频道 (CommandChannel_<id>),但我的订阅不会捕获任何内容。据我了解,!(_dev) 应该排除任何以_dev 结尾的频道,但允许我期望的所有其他频道。
我在这里错过了什么?
【问题讨论】:
标签: c# redis glob stackexchange.redis