安装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的更多相关文章

  1. 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 ...

  2. publish dotnet core angular spa app to docker

    公司一个使用Angular开发的应用准备下个版本使用.Net Core开发后台, 刚好可以用到.Net Core Angular Spa模板, 而且最近也在学习Docker, 于是就想把它融汇贯通, ...

  3. .net core 使用Redis的发布订阅

    Redis是一个性能非常强劲的内存数据库,它一般是作为缓存来使用,但是他不仅仅可以用来作为缓存,比如著名的分布式框架dubbo就可以用Redis来做服务注册中心.接下来介绍一下.net core 使用 ...

  4. dotNet Core开发环境搭建及简要说明

    一.安装 .NET Core SDK 在 Windows 上使用 .NET Core 的最佳途径:使用Visual Studio. 免费下载地址: Visual Studio Community 20 ...

  5. dotnet core多平台开发体验

    前言 随着net core rc2的发布,园子里面关于net core的入门文章也也多了起来,但是大多数都是在一个平台上面来写几个简单的例子,或者是在解释代码本身,并没有体现说在一个平台上面创建一个项 ...

  6. 安装dotnet core

    CentOS 7.1下安装dotnet core .NET CORE的官方(http://dotnet.github.io/getting-started/)只提供了Windows, Ubuntu14 ...

  7. 这可能是最low的发布dotnet core站点到centos7

    前言 不得不说:我在chrome上写了好长一段,贴了23张图,然后一个crash..我想说我电脑上的chrome已经crash太多次了 以后一定要搞离线编辑的. 正文 什么是.net core,bal ...

  8. spring cloud+dotnet core搭建微服务架构:Api授权认证(六)

    前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...

  9. 手把手教你用Jenkins自动发布dotnet core程序

    Jenkins部分 首先,我们要有个Jenkins咯,下载链接:https://jenkins.io/download/ 我们安装官网教程安装好jenkins,安装教程略.... 嗯?不是说好手把手么 ...

随机推荐

  1. 《挑战30天C++入门极限》引言

    作为一个长篇的C++入门教程,无论如何也应该有这么个引言,可是文笔并不好的我,想了很久也不知道该如何写...... 仔细想想,与其把这篇短文当作教程的引言,其实它更应该是一篇引导初学者步入C++殿堂的 ...

  2. Pytest权威教程27-Bash自动补全设置

    目录 Bash自动补全设置 返回: Pytest权威教程 Bash自动补全设置 在Linux/Mac bash shell环境下,可以使用argcomplete对pytest命令进行自动补全.首先要安 ...

  3. PreTranslateMessage中有调用模态对话框的解决方法

    原文:https://blog.csdn.net/guoguojune/article/details/45332511 dlg.DoModal()截住了界面消息,所以返回时原来的pMsg的内容已经更 ...

  4. 1.xml解析

    public static void main(String[] args) throws DocumentException {         SAXReader saxReader = new ...

  5. SpringMVC+Spring+Mybatis简单总结

    SpringMVC+Spring+Mybatis总结 第一部分:分析 web.xml中的配置 SSM框架的整合其实是Spring和SpringMVC的整合以及Spring和Mybatis进行整合. 当 ...

  6. 三层交换+DHCP实验详解

  7. 制作OpenFOAM计算结果的gif动画【转载】

    转载自:http://blog.sina.com.cn/s/blog_6277cbbf0100niqi.html PS:对其中错误地方进行了修正 1.用ParaView将每一帧都输出成图片(File- ...

  8. 2、vueJs基础知识02

    vue生命周期: 钩子函数: created -> 实例已经创建 √ beforeCompile -> 编译之前 compiled -> 编译之后 ready -> 插入到文档 ...

  9. Azure存储简介

    注:此篇文档主要讲述微软azure全球版,并不完全试用azure中国区   azure存储是Microsoft一项托管服务,提供的云存储的可用性.安全性.持久性.可伸缩性和冗余都很高,azure存储包 ...

  10. 用sublime3编写运行16位汇编程序_详细教程

    最近需要学8086汇编,课堂教学竟然是PPT看代码,然而不运行程序是没法学编程的.网上的教程有很多坑点,摸索出了正确的步骤. 1.安装sublime3.安装MASM32.64位系统安装DOSBOX(因 ...