dotnet core use Redis to publish and subscribe
安装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的更多相关文章
- Basic Tutorials of Redis(7) -Publish and Subscribe
This post is mainly about the publishment and subscription in Redis.I think you may subscribe some o ...
- publish dotnet core angular spa app to docker
公司一个使用Angular开发的应用准备下个版本使用.Net Core开发后台, 刚好可以用到.Net Core Angular Spa模板, 而且最近也在学习Docker, 于是就想把它融汇贯通, ...
- .net core 使用Redis的发布订阅
Redis是一个性能非常强劲的内存数据库,它一般是作为缓存来使用,但是他不仅仅可以用来作为缓存,比如著名的分布式框架dubbo就可以用Redis来做服务注册中心.接下来介绍一下.net core 使用 ...
- dotNet Core开发环境搭建及简要说明
一.安装 .NET Core SDK 在 Windows 上使用 .NET Core 的最佳途径:使用Visual Studio. 免费下载地址: Visual Studio Community 20 ...
- dotnet core多平台开发体验
前言 随着net core rc2的发布,园子里面关于net core的入门文章也也多了起来,但是大多数都是在一个平台上面来写几个简单的例子,或者是在解释代码本身,并没有体现说在一个平台上面创建一个项 ...
- 安装dotnet core
CentOS 7.1下安装dotnet core .NET CORE的官方(http://dotnet.github.io/getting-started/)只提供了Windows, Ubuntu14 ...
- 这可能是最low的发布dotnet core站点到centos7
前言 不得不说:我在chrome上写了好长一段,贴了23张图,然后一个crash..我想说我电脑上的chrome已经crash太多次了 以后一定要搞离线编辑的. 正文 什么是.net core,bal ...
- spring cloud+dotnet core搭建微服务架构:Api授权认证(六)
前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...
- 手把手教你用Jenkins自动发布dotnet core程序
Jenkins部分 首先,我们要有个Jenkins咯,下载链接:https://jenkins.io/download/ 我们安装官网教程安装好jenkins,安装教程略.... 嗯?不是说好手把手么 ...
随机推荐
- ELK教程1:ElasticSearch集群的部署ELK
在分布式系统中,应用数量众多,应用调用链复杂,常常使用ELK作为日志收集.分析和展示的组件.本篇文章将讲讲解如何部署ELK,然后讲解如何使用Filebeat采集Spring Boot的日志输出到Log ...
- Pytest权威教程04-断言的编写和报告
目录 断言的编写和报告 使用assert语句进行断言 异常断言 警示断言 使用上下文对比 自定义断言对比信息 高级断言内省 返回: Pytest权威教程 断言的编写和报告 使用assert语句进行断言 ...
- SQL题(子文章)(持续更新)
-----> 总文章 入口 文章目录 [-----> 总文章 入口](https://blog.csdn.net/qq_37214567/article/details/90174445) ...
- thymeleaf错误解决办法
Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "username&q ...
- SpringCloud服务Gradle本地jar配置
1. 将jar包移到与src平级的目录内,并在build.gradle文件中配置如下: dependencies{ compile fileTree(dir:'libs/',include:" ...
- 2018-2019-2 《网络对抗技术》Exp8 Web基础 20165326
Web基础 实验要求 本实践的要求: Web前端HTML,能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. Web前端javascipt.理 ...
- 生成模型 VS 判别模型 (含义、区别、对应经典算法)
从概率分布的角度考虑,对于一堆样本数据,每个均有特征Xi对应分类标记yi. 生成模型:学习得到联合概率分布P(x,y),即特征x和标记y共同出现的概率,然后求条件概率分布.能够学习到数据生成的机制 ...
- HearthBuddy修改系统时间
将以下代码保存在.bat文件,然后用管理员权限运行 pushd "%~dp0" #下面修改时间,根据操作系统的语言不同,会有不同的格式,比如2019-10-26date 10/26 ...
- 【idea】断点调试时查看所有变量和静态变量
转载至博客:https://blog.csdn.net/qq32933432/article/details/86672341 缘起 笔者在进行HashMap原理探索的时候需要在IntelliJ ID ...
- Sizes of integer types 整形字节长度 系统字节
/usr/include/limits.h /* Copyright (C) 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2005 Free Software ...