码迷,mamicode.com
首页 > Web开发 > 详细

dotnet core use Redis to publish and subscribe

时间:2019-11-04 19:28:42      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:新建   err   inpu   git   用法   消息   app   就是   ast   

安装Redis

同样我这边再次使用Docker, 方便快捷:

# 拉取镜像
docker pull redis
# 运行镜像
docker run -d -p 6379:6379 --name redisapp redis

创建项目

这边依旧使用VS, 项目源码在Gitee.

连接驱动这里选择StackExchange.Redis,之前一直是用ServiceStack.Redis, 但是它已经逐渐商业化,4.0及以上版本都具有限制.

这里的发布订阅只是Redis功能的一部分, 所以我新建一个类把代码剥离出来:

    public class Publish_Subscribe
    {
        public Publish_Subscribe(bool isPublisher)
        {
            //创建连接
            using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379"))
            {
                ISubscriber sub = redis.GetSubscriber();
                if (isPublisher) Publisher(sub);
                else Subscriber(sub);
            }
        }

        private void Publisher(ISubscriber sub)
        {
            Console.WriteLine("Please Enter Message or ‘q’ to Exit");
            string input;
            do
            {
                input = Console.ReadLine();
                sub.Publish("messages", input);
            } while (input != "q");
        }

        private void Subscriber(ISubscriber sub)
        {
            //订阅名为 messages 的通道
            sub.Subscribe("messages", (channel, message) =>
            {
                //输出收到的消息
                Console.WriteLine($"[{DateTime.Now:HH:mm:ss}] {message}");
            });
            Console.WriteLine("Already Subscribe ‘messages’");
            Console.ReadKey();
        }
    }

然后修改启动函数:

        static void Main(string[] args)
        {
            var ps = new Publish_Subscribe((args.Length > 0 && args[0] == "p"));
            //Console.WriteLine("Hello World!");
        }

启动的时候加一个参数p则是启动生产者, 否则启动的就是消费者.

总结

我们可以启动多个发布者, 多个订阅者, 任何一个发布者发布的的消息都可以同时被所有订阅者收到. 后加入的订阅者不能收到之前发布的历史消息.

更多具体用法以及分发模型请参考这篇文章:https://www.cnblogs.com/stulzq/p/7542012.html

dotnet core use Redis to publish and subscribe

标签:新建   err   inpu   git   用法   消息   app   就是   ast   

原文地址:https://www.cnblogs.com/jerryqi/p/11793788.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!