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

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using ServiceStack.Redis;
    using ServiceStack.Common;
    using System.Threading;
    namespace RedisTest2
    {
        class Program
        {
           
            static void Main(string[] args)
            {
            
            
                Console.WriteLine("请输入发布订阅类型?");
                var type = Console.ReadLine();
                if (type == "pub")
                {
                    Pub();
                }
                else
                {
                    Sub();
                }
            }
    
    
            public static void Pub()
            {
                using (IRedisClient publisher = new RedisClient("127.0.0.1", 6379))
                {
                   
                    while (true)
                    {
                        var msg = Console.ReadKey();
                        publisher.PublishMessage("c1", string.Format("这是我发送的第消息!{0}", DateTime.Now));
                    }
                 
                }
    
                //using (IRedisClient publisher = new RedisClient("127.0.0.1", 6379))
                //{
                //    //for (int i = 1; i <= 100; i++)
                //    //{
                //    while (true)
                //    {
                       
                //        publisher.PublishMessage("c1", string.Format("这是我发送的第消息!{0}", DateTime.Now));
                //    }
                //       // Thread.Sleep(200);
                //   // }
                //}
            }
    
    
            /// <summary>
            /// 订阅
            /// 一个客户端订阅c1
            /// </summary>
            public static void Sub()
            {
                using (var consumer = new RedisClient("127.0.0.1", 6379))
                {
                    //创建订阅
                    IRedisSubscription subscription = consumer.CreateSubscription();
    
                    //接受到消息时的委托
                    subscription.OnMessage = (channel, msg) =>
                    {
                        Console.WriteLine("频道【" + channel + "】订阅客户端接收消息:" + ":" + msg + " [" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "]");
                        Console.WriteLine("订阅数:" + subscription.SubscriptionCount);
                        Console.WriteLine("___________________________________________________________________");
                    };
    
                    //订阅事件处理
                    subscription.OnSubscribe = channel => { Console.WriteLine("订阅客户端a:开始订阅" + channel); };
    
                    //取消订阅事件处理
                    subscription.OnUnSubscribe = a => { Console.WriteLine("订阅客户端:取消订阅"); };
    
                    //订阅频道
                    subscription.SubscribeToChannels("c1");
    
                }
            }
    
        
        }
    }
    View Code

     参考 http://blog.csdn.net/wulex/article/details/52712664

  • 相关阅读:
    hdu
    《Linux命令行与shell脚本编程大全》 第十四章 学习笔记
    zoj 3665 Yukari's Birthday(枚举+二分)
    ActiveMQ使用STOMP协议的一个错误问题:Unexpected ACK received for message-id
    Ubuntu下屏幕录像、后期处理不完全攻略
    find-all-numbers-disappeared-in-an-array
    find-right-interval
    non-overlapping-intervals
    cut命令如何截取以空格隔开的字段
    arranging-coins
  • 原文地址:https://www.cnblogs.com/tiancai/p/6604842.html
Copyright © 2011-2022 走看看