首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C#使用Socket实现分布式事件总线,不依赖第三方MQ

C#使用Socket实现分布式事件总线,不依赖第三方MQ

作者头像
沙漠尽头的狼
发布于 2024-07-29 01:32:32
发布于 2024-07-29 01:32:32
31901
代码可运行
举报
文章被收录于专栏:Dotnet9Dotnet9
运行总次数:1
代码可运行

使用Socket实现的分布式事件总线,不依赖第三方MQ。

CodeWF.EventBus.Socket 是一个轻量级的、基于Socket的分布式事件总线系统,旨在简化分布式架构中的事件通信。它允许进程之间通过发布/订阅模式进行通信,无需依赖外部消息队列服务。

unsetunset特性unsetunset

  • 轻量级:不依赖任何外部MQ服务,减少了系统复杂性和依赖。
  • 高性能:基于Socket的直接通信,提供低延迟、高吞吐量的消息传递。
  • 灵活性:支持自定义事件类型和消息处理器,易于集成到现有系统中。
  • 可扩展性:支持多客户端连接,适用于分布式系统环境。

unsetunset安装unsetunset

通过NuGet包管理器安装CodeWF.EventBus.Socket

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Install-Package CodeWF.EventBus.Socket

unsetunset服务端使用unsetunset

运行事件服务

在服务端代码中,创建并启动EventServer实例以监听客户端连接和事件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using CodeWF.EventBus.Socket;

// 创建事件服务器实例
IEventServer eventServer = new EventServer();

// 启动事件服务器,监听指定IP和端口
eventServer.Start("127.0.0.1", 9100);

停止事件服务

当不再需要事件服务时,调用Stop方法以优雅地关闭服务器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
eventServer.Stop();

unsetunset客户端使用unsetunset

连接事件服务

在客户端代码中,创建EventClient实例并连接到事件服务器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using CodeWF.EventBus.Socket;

// 创建事件客户端实例
IEventClient eventClient = new EventClient();

// 连接到事件服务器
if (eventClient.Connect("127.0.0.1", 9100, out var message))
{
    Console.WriteLine("连接事件服务成功!");
}
else
{
    Console.WriteLine($"连接事件服务失败:{message}");
}

订阅事件

订阅特定类型的事件,并指定事件处理函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
eventClient.Subscribe<NewEmailNotification>("event.email.new", ReceiveNewEmail);

private void ReceiveNewEmail(NewEmailNotification message)
{
    // 处理新邮件通知
    Console.WriteLine($"收到新邮件,主题是{message.Subject}");
}

发布事件

发布事件到指定的主题,供已订阅的客户端处理。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 发布新邮件通知事件
eventClient.Publish("event.email.new", new NewEmailNotification { Subject = "恭喜您中Github一等奖", Content = "我们很开心,您在2024年7月...", SendTime = new DateTime(2024, 7, 27) });

取消订阅事件

不再需要接收某类事件时,可以取消订阅。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
eventClient.Unsubscribe<NewEmailNotification>("event.email.new", ReceiveNewEmail);

断开事件服务

完成事件处理或需要断开与服务器的连接时,调用Disconnect方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
eventClient.Disconnect();
Console.WriteLine("断开与事件服务的连接");

unsetunset注意事项unsetunset

  • 确保服务端和客户端使用的地址和端口号一致,并且端口未被其他服务占用。
  • 在生产环境中,服务端应配置为监听公共IP地址或适当的网络接口。
  • 考虑到网络异常和服务重启等情况,客户端可能需要实现重连逻辑。
  • 根据实际需求,可以扩展EventServerEventClient类以支持更复杂的功能,如消息加密、认证授权等。

unsetunset项目地址unsetunset

  • 地址:https://github.com/dotnet9/CodeWF.EventBus.Socket
  • 开源协议:MIT
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Dotnet9 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C#使用Socket实现分布式事件总线教程,不依赖第三方MQ
CodeWF.EventBus.Socket 是一个轻量级的、基于 Socket 的分布式事件总线系统,旨在简化分布式架构中的事件通信。它允许进程之间通过发布/订阅模式进行通信,无需依赖外部消息队列服务。
Power
2025/04/01
1700
HP-Socket与SuperSocket的区别
HP-Socket 和 SuperSocket 都是高性能的网络通信框架,但它们在设计理念、功能特性和实现方式上存在一些区别。以下是用C#代码示例来说明它们的主要区别。
软件架构师Michael
2025/01/24
3320
C# 一分钟浅谈:Socket 编程基础
在现代网络应用开发中,Socket 编程是一种非常重要的技术,它允许不同设备之间的应用程序通过网络进行通信。本文将从基础概念入手,逐步深入到 Socket 编程中的常见问题和易错点,并通过具体的代码示例来帮助读者更好地理解和掌握这一技术。
Jimaks
2024/10/18
2420
C# Socket编程笔记
看到这个题目,是不是很眼熟?在博客园里搜下,保证会发现关于这个东东的文章实在是太多了~~~真得是没有写得必要,而且我也有点懒得去琢磨字句。(看到这,肯定得来个转折的了,不然就看不到下文了,不是吗)但是,为了自己下一篇要写的文章做参考,还是有必要先补充一下socket基础知识。
zls365
2020/08/19
1.2K0
C# Socket编程笔记
C# 三种方式实现Socket数据接收(经典)
public abstract int Read(byte[] buffer, int offset, int count)
zls365
2021/01/14
8.2K0
C# 三种方式实现Socket数据接收(经典)
c#简单的socket通讯demo
代码中注释比较多 如果仍旧看不懂请看JimmyZhang的这篇文章 http://www.cnblogs.com/JimmyZhang/archive/2008/09/07/1286300.html 讲的很细很基础
liulun
2022/05/09
3710
CodeWF.EventBus:轻量级事件总线,让通信更流畅
EventBus(事件总线),用于解耦模块之间的通讯。本库(CodeWF.EventBus)适用于进程内消息传递(无其他外部依赖),与大家普遍使用的MediatR部分类似,但MediatR库侧重于ASP.NET Core设计使用,而本库也有点点优势:
沙漠尽头的狼
2024/06/10
3350
CodeWF.EventBus:轻量级事件总线,让通信更流畅
C# SOCKET发送和接收例子
Socket 客户端 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace A0140_SocketClient.Sample { /// <summary> /// 这个类为一个 Socket 客户端的例子. /// 这个类简单的 连接到 Socket 服务器,并发送一段消息。 /
用户8671053
2021/11/03
2.6K0
C# 链接 MQTT 的简单示例
以下是一个使用 C# 链接 MQTT 的简单示例代码,使用了M2Mqtt库(这是一个流行的用于 C# 开发中与 MQTT 协议通信的库):
软件架构师Michael
2024/12/30
1K0
socket通信(C#)
4:接受到客户端的连接,用socket对像的Accept()方法创建新的socket对像用于和请求的客户端进行通信;
红目香薰
2022/11/29
1K0
socket通信(C#)
Socket
网络通信三要素: IP地址、端口号、传输协议 TCP、UDP协议 Socket通信流程: Server: 1.创建socket msocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 2.绑定socket和端口号 //创建一个IP对象 IPAddress iPAddress = IPAddress.Parse(ip);
祝你万事顺利
2019/05/29
9740
C#中Socket的简单使用
一.Socket的概念 Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口.
全栈程序员站长
2022/09/07
1.2K0
C#中Socket的简单使用
C# socket通信实现两个控制台之间聊天
1、运行效果 图1 启动服务端 图2 启动客户端 图3 客户发消息 图4 服务端发消息 图5 客户主动关闭,服务段打印异常详情 2、服务器端源码 服务端和客户端都要添加一下namespace: using System.Net; using System.Net.Sockets; using System.Threading; 源码:  class Program     {         private static string serverIP = "192.168.3.42";
用户7705674
2021/11/03
9310
Web的socket与C# socket相互通信
web端代码就是js代码,C#有两种方式:使用第三方库,如Fleck,使用C#原生socket编程实现
郑子铭
2023/08/29
3260
Web的socket与C# socket相互通信
分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载
     在很多MIS项目之中都有这样的需求,需要一个及时、高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用的程序之中写数据库轮循代码,这样就会产品一个很严重的两个问题,第一个问题是延迟,轮循机制要定时执行,必须会引起延迟,第二个问题是数据库压力过大,当进行高频度的轮循会生产大量的数据库查询,并且如果有大量的使用者进行轮循,那数据库的压力就更大了。
魏琼东
2018/07/31
9610
分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载
C#进阶-实现邮箱收发功能
在C#中,发送邮件是一项常见的任务,通常用于实现自动化通知、报警和与用户进行交互等场景。C#提供了多种发送邮件的方式,主要方式包括SMTP协议、POP3协议、IMAP协议、Exchange服务器等。使用这些方式,开发人员可以灵活地发送和接收邮件,满足各种应用场景的需求。
Damon小智
2024/03/20
8140
C#进阶-实现邮箱收发功能
《 Socket.IO》 解决 WebSocket 通信!
大家好呀,我是小菜~ 本文主要介绍 Socket.IO 微信公众号已开启,小菜良记,没关注的同学们记得关注哦! 在介绍 Socket.IO 之前, 我们先考虑一个问题, 如果这个时候有个需求, 类似
蔡不菜丶
2022/09/21
2.6K0
《 Socket.IO》 解决 WebSocket 通信!
最简单的C#socket通信
立羽
2023/08/24
2110
使用node、Socket.io 搭建简易聊天室
Socket.io是一个WebSocket库,会自动根据浏览器从WebSocket、AJAX长轮询、Iframe流等等各种方式中选择最佳的方式来实现网络实时应用,而且支持的浏览器最低达IE5.5。 Socket.io 服务器 和 Socket.io 客户端之间全双工通信信道 尽可能使用WebSocket 连接建立(”尽可能“就说明要求客户端和服务端都必须使用,HTTP 长轮询`作为后备。 在了解socket-io前,我们先了解三种通信方式和Http轮询。
can4hou6joeng4
2023/11/29
5790
HP-Socket 原理与C#应用实例
HP-Socket 是一个高性能的 TCP/UDP 通信框架,支持多种编程语言,包括 C++、C 和 .NET。以下是对其原理和代码实例的分析:
软件架构师Michael
2025/01/23
3370
相关推荐
C#使用Socket实现分布式事件总线教程,不依赖第三方MQ
更多 >
加入讨论
的问答专区 >
技术总监架构部总经理擅长3个领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档