zoukankan      html  css  js  c++  java
  • 发布和订阅

    发布/订阅,故名思义,就是一个发布消息,多个订阅的客户端都收到这个消息。

    举两个实际的例子,第一个想到的是电台,电台在专属的调频上播出节目,多个收音机只要在这个调频上,就可以收听到这个电台节目。

    另一个例子是博客的RSS,只要博言主发表了博客,只要订阅了该博客的人都会收到通知邮件。

    下面就结合redis的相关命令来看一下。

    publish channel message,将信息message发送到指的频道channel。

    subscribe channel [channel ...] 订阅给定的一个或多个频道的信息。

    Psubscribe pattern [pattern ...] 订阅一个或多个符合给定模式的频道。

    clipboard

    clipboard[1]

    看到了吧,这就是传说中的发布订阅。

    StackExchange.Redis中的发布订阅

    发布消息:ISubscriber.Publish(string channel, string message);

    订阅消息:ISubscriber.Subscribe(string channel, Action<string channel, string message> action);

    订阅时要异步去做,单独一个线程一直监听。

    可以参考如下代码。

    发布消息:

    subscriber.Publish(PbsRedisSubscribeChannels.ClearCacheChannel, message);

    订阅:

    public static void StartListenClearCache()
    
            {
    
                _listenTask = Task.Factory.StartNew(() =>
    
                {
    
                    Listen();
    
                }, TaskCreationOptions.LongRunning);
    
            }
    
            /// <summary>
    
            /// 监听线程内容:监听发布的消息
    
            /// </summary>
    
            private static void Listen()
    
            {
    
                try
    
                {
    
                    var client = RedisHelper.GetClientManager();
    
                    var subscriber = client.GetSubscriber();
    
                    subscriber.Subscribe(PbsRedisSubscribeChannels.ClearCacheChannel, HandleSubsMessage);
    
                    subscriber.Subscribe(PbsRedisSubscribeChannels.ReportCacheChannel, HandleSubsMessage);
    
                }
    
                catch (Exception ex)
    
                {
    
                    var mailContent = $"Redis订阅异常:{AppDomain.CurrentDomain.FriendlyName}({AppDomain.CurrentDomain.BaseDirectory}){Environment.NewLine}{ex.ToString()}";
    
                    SendMail(mailContent);
    
                }
    
            }
  • 相关阅读:
    MongoDB安装与启动
    Mac node.js express-generator脚手架安装
    AJAX状态值与状态码
    博客园 Markdown编辑器简要教程
    高效、可维护、组件化的CSS
    如何在mac上运行vue项目
    前端chrome调试
    Light of future-冲刺集合
    团队作业第六次—事后诸葛亮
    Light of future-冲刺总结
  • 原文地址:https://www.cnblogs.com/mcgrady/p/5082895.html
Copyright © 2011-2022 走看看