복붙노트

[REDIS] 레디 스 팝 / 하위 ServiceStack, 스레드를 취소

REDIS

레디 스 팝 / 하위 ServiceStack, 스레드를 취소

이 어쩌면 더 일반적인 스레딩 문제는 잘 모르겠어요.

그러나 나는 WPF 응용 프로그램을 가지고있는 레디 스 데이터베이스에서 메시지에 대한 채널 듣는다에 등록합니다.

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

내가이 시작하면 나는 그것을 중지하는 방법을 모른다.

것들 내가 시도했습니다.

어떻게 내가 마음대로 / 재 연결을 연결할 수에 대해 그냥 듣기를 중지 가야합니까?

나는 새 스레드에 SubscribeToChannels를 시작하여 잘못을하고 있습니까?

해결법

  1. ==============================

    1.메시지에서 쇼 어떻게 가입 할 것을 예 및 탈퇴는 RedisMqServer, 예컨대에 있습니다 :

    메시지에서 쇼 어떻게 가입 할 것을 예 및 탈퇴는 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 핸들러에서 모든 채널에서 백그라운드 스레드 및 탈퇴 차단을 해제하기 위해 사용자 지정 컨트롤 메시지를 사용하는 경우.

  2. from https://stackoverflow.com/questions/21204839/redis-pub-sub-servicestack-cancelling-the-thread by cc-by-sa and MIT license