.Net5使用Redis实现发布/订阅

   日期:2021-03-31     浏览:100    评论:0    
核心提示:Redis作为高性能内存数据库的代表,它一般是作为缓存来使用,但是它不仅于此,Redis也可以来做服务注册中心,下面就来说说如何在.Net5下使用Redis实现订阅/发布。Redis pub/subRedis 发布订阅(pub/sub)简单来说就是发送者(pub)发送消息,订阅者(sub)接收消息。日常生活中比如咱们关注的微信公众号会经常给我们推送各种信息,这就是典型的发布订阅,这是怎么做的呢,下面咱们一起来看看.Net5实现注:以下项目都是使用.Net5控制台程序创建测试1.首先创建一个Re

Redis作为高性能内存数据库的代表,它一般是作为缓存来使用,但是它不仅于此,Redis也可以来做服务注册中心,下面就来说说如何在.Net5下使用Redis实现订阅/发布。

Redis pub/sub

Redis 发布订阅(pub/sub)简单来说就是发送者(pub)发送消息,订阅者(sub)接收消息。

日常生活中比如咱们关注的微信公众号会经常给我们推送各种信息,这就是典型的发布订阅,这是怎么做的呢,下面咱们一起来看看

.Net5实现

注:以下项目都是使用.Net5控制台程序创建测试
1.首先创建一个RedisPublish项目用来模拟发布服务器
引入Redis包

2.写入如下代码

   static void Main(string[] args)
        {
			try
			{
				//创建一个公众号--创建一个主题
				Console.WriteLine("SendMessage");
				IRedisClientsManager redisClientManager = new PooledRedisClientManager("127.0.0.1:6379");
				string topicname = "Tom is a good cat";
				RedisPubSubServer pubSubServer = new RedisPubSubServer(redisClientManager, topicname)
				{
					OnMessage = (channel, msg) =>
					{
			//此处可以写入日志记录
						Console.WriteLine("___________________________________________________________________");
					},
					OnStart = () =>
					{
						Console.WriteLine("发布服务已启动");
						Console.WriteLine("___________________________________________________________________");
					},
					OnStop = () => { Console.WriteLine("发布服务停止"); },
					OnUnSubscribe = channel => { Console.WriteLine(channel); },
					OnError = e => { Console.WriteLine(e.Message); },
					OnFailover = s => { Console.WriteLine(s); },
				};
				//接收消息
				pubSubServer.Start();
				while (true)
				{
					Console.WriteLine("请输入推送内容");
					string message = Console.ReadLine();
					redisClientManager.GetClient().PublishMessage(topicname, message);
				}
			}
			catch (Exception ex)
			{

				Console.WriteLine(ex.Message);
			}

		}

3.创建一个RedisSub项目用来模拟订阅客户端
写入以下代码

        static void Main(string[] args)
        {
			try
			{
				using (RedisClient consumer = new RedisClient("127.0.0.1", 6379))
				{

					Console.WriteLine($"这是订阅客户端");
					var subscription = consumer.CreateSubscription();
					//接受到消息时
					subscription.OnMessage = (channel, msg) =>
					{
						if (msg != "CTRL:PULSE")
						{
						//此处可以写入日志记录
	
						}

					};
					//订阅频道时
					subscription.OnSubscribe = (channel) =>
					{
						Console.WriteLine("订阅客户端:开始订阅" + channel);
					};
					//取消订阅频道时
					subscription.OnUnSubscribe = (a) => { Console.WriteLine("订阅客户端:取消订阅"); };
					//订阅频道
					string topicname = "Tom is a good cat";
					subscription.SubscribeToChannels(topicname);
				}
			}
			catch (Exception ex)
			{
				Console.WriteLine(ex.Message);
			}
		}

4.开启发布服务器,模拟两个订阅客户端

发布服务器输入推送内容,两个订阅客户端接收到推送内容
效果如下:

这样就在.Net5下基于Redis实现了发布/订阅
如此文看完对您有所帮助请帮忙点点赞。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服