.Net5 usa Redis para implementar publicación / suscripción

Como representante de la base de datos de memoria de alto rendimiento, Redis generalmente se usa como caché, pero no es solo eso, Redis también se puede usar como un registro de servicios. Hablemos sobre cómo usar Redis para implementar la suscripción / publicación en .Net5 .

Redis pub / sub

Redis publicar y suscribirse (pub / sub) simplemente significa que el remitente (pub) envía un mensaje y el suscriptor (sub) recibe el mensaje.
Inserte la descripción de la imagen aquí

En la vida diaria, por ejemplo, la cuenta pública de WeChat a la que prestamos atención a menudo nos envía información diversa. Esta es una publicación y suscripción típica. ¿Cómo se hace? Echemos un vistazo.

Implementación de .Net5

Nota: Los siguientes proyectos se crean utilizando el programa de consola .Net5
. 1. Primero cree un proyecto RedisPublish para simular el servidor de publicación.
Introduzca el paquete Redis
Inserte la descripción de la imagen aquí
2. Escriba el siguiente código

   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. Cree un proyecto RedisSub para simular el cliente de suscripción y
escriba el siguiente código

        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. Encienda el servidor de publicación y simule dos clientes suscritos El
Inserte la descripción de la imagen aquí
servidor de publicación ingresa el contenido push y los dos clientes suscriptores reciben el contenido push. El
efecto es el siguiente:
! [Inserte la descripción de la imagen aquí] (https://img-blog.csdnimg.cn/20210330205318418.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG3G9nLm

De esta manera, la publicación / suscripción basada en Redis se realiza bajo .Net5. Después de
leer este artículo, te será de gran ayuda, por favor ayuda y dale me gusta.

Supongo que te gusta

Origin blog.csdn.net/paradoxx/article/details/115333885
Recomendado
Clasificación