我在Azure中设置了四种不同的Redis缓存订阅。我还有四个App Services,每个都使用其中一个Redis Cache订阅。四个App Services / Redis缓存订阅适用于相同的代码库,但环境不同。我使用了测试,舞台,东海岸和西海岸生活环境。
每个应用服务中运行的代码完全相同。
我有一个使用StackExchange.Redis的ASP.NET Core Web API项目。在我的Web API项目中,我连接到Azure中设置的Redis订阅,该订阅对应于App Service的环境。作为我的Web API项目启动过程的一部分,我打开了四个PubSub频道。
对于测试,舞台和西海岸环境,四个PubSub频道可以创建并且工作得很好。我可以通过Azure连接到Redis控制台并运行PUBSUB CHANNELS命令并查看我通过代码创建的四个通道。
出于某种原因,在Live-east Coast Redis订阅中,只有一个PubSub频道出现。我还可以验证只有一个通道实际打开。我调用Web API的前端具有将消息发布到Redis PubSub的逻辑。这些不适用于东海岸的App Service。如果我重新启动App Service或重新启动Redis,那么我有时可以显示所有四个PubSub频道并正常工作。每当我将新代码部署到我的东海岸App Service时,服务启动后,只会创建其中一个频道。
出于某种原因,Redis正在关闭我的三个PubSub频道。同样,这只发生在我的四个Redis订阅/应用服务之一中。其他三个完美无缺。
我已确保我的四个Redis订阅和四个App Services的所有设置都相同。我已经尝试过多次重启和重新部署,而我却无法通过Redis的实时订购来保持所有四个PubSub频道的开放。
有没有人经历过这样的事情?有没有人看到Azure Redis Cache随机关闭他们的PubSub频道?
答案 0 :(得分:0)
订阅该频道的客户端可能已死亡或从未成功连接。订阅者数量达到零后,PUBSUB channels
将不再显示该频道。尝试运行PUBSUB numsub <channel_name>
以验证是否有订阅者。同时运行CLIENT list
以查看有多少客户有订阅(类似于sub=1
)。