Redis之品鉴之旅(四)

发布订阅,简单场景下的发布订阅完全可以使用。

可以简单的理解,将一个公众号视为发布者,关注公众号的人视作订阅者,公众号发布一条文章或者消息,凡事订阅公众号的都可以收到消息。一个人可以订阅多个公众号,一个公众号可以被多个人订阅。

//创建一个公众号--创建一个主题
Console.WriteLine("发布服务");
IRedisClientsManager redisClientManager = new PooledRedisClientManager("127.0.0.1:6379");
string topicname = "Send_Log";
RedisPubSubServer pubSubServer = new RedisPubSubServer(redisClientManager, topicname)
{
	OnMessage = (channel, msg) =>
	{
		Console.WriteLine($"从频道:{channel}上接受到消息:{msg},时间:{DateTime.Now.ToString("yyyyMMdd HH:mm:ss")}");
		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 (1==1)
{
	Console.WriteLine("请输入记录的日志");
	string message = Console.ReadLine();
	redisClientManager.GetClient().PublishMessage(topicname, message);
}

订阅方:

using (RedisClient consumer = new RedisClient("127.0.0.1", 6379, "12345", 10))
{

	Console.WriteLine($"创建订阅异常信息数据库记录");
	var subscription = consumer.CreateSubscription();
	//接受到消息时
	subscription.OnMessage = (channel, msg) =>
	{
		if (msg != "CTRL:PULSE")
		{
			Console.WriteLine($"从频道:{channel}上接受到消息:{msg},时间:{DateTime.Now.ToString("yyyyMMdd HH:mm:sss")}");
			Logger.WriteLogByDB(msg);
			Console.WriteLine("_________________________________记录成功__________________________________");
		}
	};
	  
	//订阅频道时  Mylist 利用数组
	subscription.OnSubscribe = (channel) =>
	{
		Console.WriteLine("订阅客户端:开始订阅" + channel);
	};
	//取消订阅频道时
	subscription.OnUnSubscribe = (a) => { Console.WriteLine("订阅客户端:取消订阅"); };

	//订阅频道
	string topicname = "Send_Log";
	subscription.SubscribeToChannels(topicname);
}

订阅方2:

using (RedisClient consumer = new RedisClient("127.0.0.1", 6379, "12345", 10))
{

	Console.WriteLine($"创建订阅异常信息文本记录");
	var subscription = consumer.CreateSubscription();
	//接受到消息时
	subscription.OnMessage = (channel, msg) =>
	{
		if (msg != "CTRL:PULSE")
		{
			Console.WriteLine($"从频道:{channel}上接受到消息:{msg},时间:{DateTime.Now.ToString("yyyyMMdd HH:mm:sss")}");
			Logger.WriteTxtLogs("log", "异常", msg);
			Console.WriteLine("_________________________________记录成功__________________________________");
		}

	};
	//订阅频道时
	subscription.OnSubscribe = (channel) =>
	{
		Console.WriteLine("订阅客户端:开始订阅" + channel);
	};
	//取消订阅频道时
	subscription.OnUnSubscribe = (a) => { Console.WriteLine("订阅客户端:取消订阅"); };
	//订阅频道
	string topicname = "Send_Log";
	subscription.SubscribeToChannels(topicname);
}

posted @ 2020-08-24 15:15  蜗牛的希望  阅读(171)  评论(0编辑  收藏  举报