用REDIS取消订阅

本文关键字:取消 REDIS | 更新日期: 2023-09-27 18:09:43

我正在使用REDIS。

我需要在Redis中使用退订。我在c#中使用ServiceStack: https://github.com/ServiceStack/ServiceStack.Redis

我复制了以下代码:http://docs.servicestack.net/redis-client/redis-pubsub

订阅时存在无限锁,所以我所做的是在线程中订阅。

我可以取消订阅,但不能使用取消订阅方法。使用以下命令可以很好地完成:

myThread.abort();
... // + sending just a publish message.

但是我需要用退订方法来做

 subscription.UnSubscribeFromAllChannels(); // ****Not like that***
// Not wanting doing like above as the example on the second link, 
// but need to do as following:
     subsciption.unsubscribe(new string[] {"MyChannel"});
unfortunely, the above just doesn't work at all (no unsubscribe).

我没有在web上看到任何示例,我需要调用取消订阅,这与第二个链接示例不一样,检查出:

if (++messagesReceived == PublishMessageCount) etc.)

如何使用subscribe方法取消订阅?像我在这篇文章中描述的那样取消订阅?

用REDIS取消订阅

订阅* API将阻塞当前线程。订阅后,回调将在与订阅相同的线程上执行消息。您还需要对同一线程上的相同订阅调用取消订阅。

与其直接使用Redis发布/订阅API,不如直接使用reddispubsubserver,它可以在后台线程中为你管理订阅。