是否需要退订StackExchange.Redis?

时间:2020-03-26 23:30:38

标签: c# redis azure-webjobs stackexchange.redis

我正在研究多个使用Redis进行缓存和广播消息的Azure Webjob。每个作业都连续运行(作为控制台应用程序),并且随时可能有多个实例(取决于缩放规则)。作业开始时,它订阅Redis频道以接收通知:

...
var subscriber = multiplexer.GetSubscriber();

await (subscriber.SubscribeAsync("channel", HandleMessage));
...

private void HandleMessage(RedisChannel channel, RedisValue value)
{
    ...
}

我们正在使用StackExchange.Redis 1.2.6。

我的问题是我无法检测到实例何时关闭,因此我没有一个可以可靠地呼叫UnsubscribeAll()的地方-到目前为止我没有尝试过:

  • AppDomain.Unload事件
  • AppDomain.ProcessExit事件
  • WebJobsShutdownWatcher

到目前为止,我仅对此进行本地测试。我不确定自己是否做错了-有关检测到Webjob关闭的问题很多-我(和我的所有同事)通过使用Ctrl-C或单击控制台窗口上的X来关闭本地作业因此,该过程只是被终止-不会触发任何事件。因此,我无法在本地测试任何解决方案。让进程不清理就退出是不合适的,但我想不出任何其他解决方案。

是否需要退订Redis频道,还是忘记它是安全的吗? (或者,我的上述任何解决方案都可以在Azure中可靠地工作吗?)

0 个答案:

没有答案