Redis Pub / Sub ServiceStack,取消线程

凯尔·戈贝尔(Kyle Gobel)

我不确定这可能是一个更一般的线程问题。

但是我有一个WPF应用程序,该应用程序订阅频道并侦听来自Redis数据库的消息。

 App.SubscriptionThread = new Thread(() =>
 {
     _redisSubscription.SubscribeToChannels("ChannelA", "ChannelB");
 });
 App.SubscriptionThread.Start();

一旦开始,我不知道如何停止它。

我尝试过的事情。

  1. 使用Thread.Abort显然,这并不能阻止它,因为线程只是挂起然后永远挂掉(没有取消订阅的发生)。

  2. 使用_redisSubscription.UnSubscribeFromAllChannels()来自UI线程。这也导致申请永远进入阻塞状态

  3. 使用强制关机Environment.Exit(0)这似乎可以解决问题。不幸的是,它还具有...嗯...关闭我的应用程序的副作用。

我如何只停止收听,以便可以随意连接/重新连接?

我通过在新线程中启动SubscribeToChannels做错了吗?

神话

RedisMqServer中的示例显示了如何订阅和取消订阅消息,例如:

using (var subscription = redisClient.CreateSubscription())
{
    subscription.OnUnSubscribe = channel => 
        Log.Debug("OnUnSubscribe: " + channel);

    subscription.OnMessage = (channel, msg) =>
    {
        if (msg == "STOP")
        {
            Log.Debug("Stop Command Issued");
            Log.Debug("Unsubscribing from all Channels...");
            subscription.UnSubscribeFromAllChannels(); //Unblocks thread.
        }
    };

    subscription.SubscribeToChannels(QueueNames.TopicIn); //blocks thread
}

它使用自定义控制消息来取消阻塞后台线程,并取消订阅OnMessage处理程序的所有通道的订阅

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Redis Pub / Sub ServiceStack,取消线程

来自分类Dev

Socket.io和Redis Pub / Sub无法正常工作

来自分类Dev

Redis PUB / SUB和高可用性

来自分类Dev

Redis可以为PUB / SUB支持多少个频道?

来自分类Dev

使用StackExchange.Redis轮循pub / sub

来自分类Dev

如何知道在 redis pub-sub 中排队的消息数?

来自分类Dev

Redis Pub / Sub和Redis Stream之间的主要区别是什么?

来自分类Dev

我应该对带有Redis的Pub和Sub使用单独的连接吗?

来自分类Dev

为什么redis中的pub sub不能与其他命令一起使用?

来自分类Dev

WebsphereMQ-Pub / Sub

来自分类Dev

Rebus Pub / Sub加密

来自分类Dev

Redux 还是 Pub/Sub?

来自分类Dev

GAE 中的 Google Pub/Sub

来自分类Dev

如何取消所有失败的 Google Cloud Pub/Sub 推送通知?

来自分类Dev

Redis Pub子通道内存

来自分类Dev

ZeroMQ PUB / XPUB / XSUB / SUB过滤

来自分类Dev

AIORedis和PUB / SUB不是asnyc

来自分类Dev

如何避免pub / sub反映事件?

来自分类Dev

How to avoid event reflection by pub/sub?

来自分类Dev

PUB-SUB的ZMQ延迟(缓慢的订户)

来自分类Dev

ZeroMQ PUB / SUB的内部行为是什么?

来自分类Dev

如何避免丢弃邮件zeromq pub sub

来自分类Dev

如何避免pub / sub反映事件?

来自分类Dev

PUB-SUB的ZMQ延迟(缓慢的订户)

来自分类Dev

ZeroMQ PUB / SUB的内部行为是什么?

来自分类Dev

Google Pub / Sub:推送到计算引擎

来自分类Dev

ZeroMQ:PUB / SUB主题订阅便宜吗?

来自分类Dev

Google Pub/Sub API - 最大消息数

来自分类Dev

Google Cloud Pub/Sub 上的重复 MessageID