致电取消订阅REDIS

时间:2015-08-25 17:40:49

标签: c# redis

我正在使用REDIS。

我需要在Redis中使用取消订阅。 我正在使用ServiceStack for C#: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).

我没有在网上看到任何示例,我需要调用取消订阅,而不是第二个链接示例,该示例已签出:

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

如何使用我在本文中描述的方法subsciption.unsubscribe取消订阅?

1 个答案:

答案 0 :(得分:1)

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

不是直接使用Redis Pub / Sub API,而是easier to just use RedisPubSubServer,它在后台线程中为您管理订阅。