自从EasyNetQ第一个版本开始,它就可以发布/订阅特定类型的消息. bus.Subscribe<MyMessage>("subscriptionId", x => Console.WriteLine(x.Text)); bus.Publish<MyMessage>(theMessage); 但是,在运行期间,你怎么去发现消息类型?例如:你可能有一些系统加载外部插件,希望能订阅他们自己的消息类型.EasyNetQ为了这个目标提供了非泛型的发布和订阅方法.…
自从EasyNetQ第一个版本开始,它就可以发布/订阅特定类型的消息. bus.Subscribe<MyMessage>("subscriptionId", x => Console.WriteLine(x.Text)); bus.Publish<MyMessage>(theMessage); 但是,在运行期间,你怎么去发现消息类型?例如:你可能有一些系统加载外部插件,希望能订阅他们自己的消息类型.EasyNetQ为了这个目标提供了非泛型的发布和订阅方法.…
发布订阅(PubSub)是一个功能强大的XMPP协议扩展.用户订阅一个项目(在xmpp中叫做node),得到通知时,也即当事项节点更新时.xmpp服务器通知用户(通过message格式). 节点类型: Leaf node: 叶子节点,包含了发布项. Collection node: 可以看做集合节点,它下面包含叶子. 注意:不能订阅整个Collection node,只能订阅Leaf node 访问和发布模式 Access and Publisher Models Open: 任何人都能订阅 A…
Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件: 由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行. ActiveMQ是用来干什么的? 用来处理消息,也就是处理JMS的.消息队列在大型电子商务类网站,如京东.淘宝.去哪儿等网站有着深入的应用, 队列的主要作用是消除高并发访问高峰,加快网站的响应速度. 在不使用消息队列的情况下,用户的请求数据直接写入数据库,高发的情况下,会对数据库造成巨大的压力, 同时也使…
Redis发布订阅 发布订阅模式中发布消息的为publisher即发布者,接收消息的为subscriber即订阅者.在Redis中,所有的消息通过channel即频道进行发布,一个发布者可以向多个channel发布消息,一个订阅者也可以订阅多个channel.Redis不对消息进行持久化,如果消息发布时订阅者还没有进行订阅,则不会再收到此消息. 发布订阅命令 命令 格式 说明 PUBLISH PUBLISH channel message 发布message到指定的channel SUBSCRI…
原文:C#秘密武器之扩展方法 为何要用扩展方法? 作为一个.NET程序猿,我们经常要跟.net自带类库或者第三方dll类库打交道,有时候我们未必能够通过反编译来查看它们的代码,但是我们通常需要给它们扩充一些新的功能,Helper类就应运而生了,我们开发出一个个的静态方法以方便调用.久而久之,我们封装的Helper类越来越多,但是这个Helper里边的方法不一定为每个开发人员所熟知,而且我们每每要敲击XXXHelper.XXX()这种类似的方法,其实这个XXXHelper完全是可以省略掉的,等于是…
集群中的分布式发布订阅 如何向一个不知道在哪个节点上运行的actor发送消息呢? 如何向集群中的所有actor发送感兴趣的主题的消息? 这种模式提供了一个中介actor,akka.cluster.pubsub.DistributedPubSubMediator,它管理actor引用的注册,复制所有集群节点或者特定角色节点的对等actor的条目. DistributedPubSubMediator actor应该在所有的节点上或者特定角色的节点上启动.中介可以由DistributedPubSub扩…
前段时间做了一个练手的小项目,采用的是三层架构,也就是Models,IDAL,DAL,BLL 和 Web , 在DAL层中各个类中有一个方法比较常用,那就是 RowToClass ,顾名思义,也就是将 DataTable 中的数据封装到 Models 中.结果导致在DAL各个类中写了很多类似的方法,后来就直接把它抽取出来做成了 DataTable和 DataRow的扩展方法, 下面是代码: using System; using System.Collections.Generic; using…
最近开始在项目中使用easynetq,大概了解了下api,在网上看了下示例,结果没有一个运行成功的,一个最简单的发布订阅都没有成功.我是直接运行起来别人的示例,不应该啊,后来一直分析一直分析,最后发现:消息没有序列化!这还是其一,第二点,应该要先起来消息接收端,再起来消息发布端.一开始就是简单的: static void Main() { using( var bus = RabbitHutch.CreateBus( "host=localhost" ) ) { bus.Subscri…
EasyNetQ支持的最简单的消息传递模式是发布/ 订阅.这种模式是消除消费者信息提供者的绝佳方式.出版商简单地向全世界说,“这已经发生了”或“我现在有了这些信息”.它不关心是否有人正在倾听,他们可能是谁或他们所在的位置.我们可以添加和删除特定消息类型的订阅者,而无需重新配置发布者.我们还可以让许多发布商发布相同的消息,再次添加和删除发布者,而无需重新配置任何其他发布者或订阅者. 要使用EasyNetQ发布(假设您已经创建了IBus实例): 创建消息的实例,它可以是任何可序列化的.NET类型.…
问题描述: 在某个窗口下的编码中使用了以下扩展方法FindControl,以求根据字符串的值去操作控件(本文中的控件为Label控件)的属性. public static Control FindControl(this Control parentControl, string findCtrlName) { Control _findedControl = null; if (!string.IsNullOrEmpty(findCtrlName) && parentControl !=…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con…
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_202 "表达欲"是人类成长史上的强大"源动力",恩格斯早就直截了当地指出,处在蒙昧时代即低级阶段的人类,"以果实.坚果.根作为食物:音节清晰的语言的产生是这一时期的主要成就".而在网络时代人们的表达欲往往更容易被满足,因为有聊天软件的存在.通常意义上,聊天大抵都基于两种形式:群聊和单聊.群聊或者群组聊天我们可以理解为聊天室,可以有人数上限,而单聊则可以认为是上限为2个人的特殊聊…
[翻译] C# 8.0 新特性 2018-11-13 17:04 by Rwing, 1179 阅读, 24 评论, 收藏, 编辑 原文: Building C# 8.0[译注:原文主标题如此,但内容大部分为新特性介绍,所以意译标题为 "C# 8.0 新特性"] C# 的下一个主要版本是 8.0.我们已经为它工作了很长一段时间,即使我们构建并发布了次要版本 C# 7.1, 7.2 和 7.3,我仍然对 8.0 将带来的新特性感到非常兴奋. 目前的计划是 C# 8.0 将与 .NET C…
纸上得来终觉浅,绝知此事要躬行.搞技术尤其如此,看别人配置SQL SERVER的复制,发布-订阅.镜像.日志传送者方面的文章,感觉挺简单,好像轻轻松松的,但是当你自己去实践的时候,你会发现还真不是那么一回事,毕竟环境不同.数据库版本或经验关系,你实践的时候会或多或少碰到一些问题,有可能人家是多次实践后,绕开了那些“坑”,毕竟写文章是事后总结,人家台上一分钟,台下十年功.闲话不扯了,进入正题,本文虽然简单,但是趁现在有时间,也记录一下前几天配置Replication的发布订阅. 环境:发布服务器A…
使用面向对象的思想 用c#控制台代码模拟猫抓老鼠 我们先来分析一下猫抓老鼠的过程 1.猫叫了 2.所有老鼠听到叫声,知道是哪只猫来了 3.老鼠们逃跑,边逃边喊:"xx猫来了,快跑啊!我是老鼠xxx" 一  双向耦合的代码 首先需要一个猫类Cat 一个老鼠类Rat 和一个测试类Program 老鼠类的代码如下 //老鼠类 public class Rat { public string Name { get; set; } //老鼠的名字 public Cat MyCat { get;…
MicrosoftSQL Server 提供了三种复制类型. 每种复制类型都适合于不同应用程序的要求. 根据应用程序需要,可以在拓扑中使用一种或多种复制类型: 快照复制 事务复制 合并复制 为了帮助您选择适当的复制类型,此主题提供了有关下列内容的信息: 复制方案 本部分简要描述了复制的多种常用情况,还提供了指向更加详细描述的链接. 复制类型 本部分描述了每个复制类型所适合的应用程序要求. 在订阅服务器上更新数据 本部分描述了需要在订阅服务器上更新数据的应用程序的可用选项. 我们建议您先要通读方案…
在上一篇,“一切都是消息”--MSF(消息服务框架)之[请求-响应]模式 ,我们演示了MSF实现简单的请求-响应模式的示例,今天来看看如何实现[发布-订阅]模式.简单来说,该模式的工作过程是: 客户端发起订阅“服务器时间”服务-->服务器接受订阅-->服务器每秒处理一次被订阅的服务方法--> 服务器将处理结果推送给客户端-->客户端收到消息-->客户端关闭订阅连接 MSF的[发布-订阅]通信模式,支持2种模式,分别是: 一.定时推送模式 这是最普通最常见的推送模式,只要客户端…
RabbitMQ是一种重要的消息队列中间件,在生产环境中,稳定是第一考虑.RabbitMQ厂家也深知开发者的声音,稳定.可靠是第一考虑,为了消息传输的可靠性传输,RabbitMQ提供了多种途径的消息持久化保证:Exchange持久化.Queue持久化及Message的持久化等.以保证RabbitMQ在重启或Crash等异常情况下,消息不会丢失.RabbitMQ提供了简单的参数配置来实现持久化操作. 简单说明一下各种持久化方式:(描述代码采用的是Rabbit.Client  SDK,  C#代码)…
<dependency>            <groupId>com.rabbitmq</groupId>            <artifactId>amqp-client</artifactId>            <version>3.6.5</version> </dependency> 最常见的几种消息通信模式主要有发布-订阅.点对点这两种http://blog.csdn.net/wooge…
MSF的名字是 Message Service Framework 的简称,由于目前框架主要功能在于处理即时(immediately)消息,所以iMSF就是 immediately Message Service Framework,中文名称:即时消息服务框架,它是PDF.NET框架的一部分. 在后续的文章中,iMSF跟MSF是一个意思,或者你也可以给它取一个好听的中文名称:爱美XX :) 在上一篇,“一切都是消息”--MSF(消息服务框架)之[请求-响应]模式 ,我们演示了MSF实现简单的请求…
在项目中用到了redis作为缓存,再学习了ActiveMq之后想着用redis实现简单的消息队列,下面做记录.   Redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易的实现一个高性能的优先队列.同时在更高层面上,Redis还支持"发布/订阅"的消息模式,可以基于此构建一个聊天系统. 一.redis的列表类型天生支持用作消息队列.(类似于MQ的队列模型--任何时候都可以消费,一条消息只能消费一次) list操作参考:https://www.cnblogs.com/ql…
redis redis相关配置1.yum  源码 rpm  yum 快速,间接,高效,解决依赖关系,(自动安装到某个路径,不可控),通过yum安装的软件查询命令 rpm -ql nginx  yum源的软件包可能版本非常低 源码安装,可扩展第三方的功能(可以指定目录安装, configure --prefix=/opt/python36/) 可以通过官网的最新代码,进行编译安装 通过源码安装1.在线下载redis源码包wget http://download.redis.io/releases/…
RabbitMQ系列教程之三:发布/订阅(Publish/Subscribe) (本教程是使用Net客户端,也就是针对微软技术平台的) 在前一个教程中,我们创建了一个工作队列.工作队列背后的假设是每个任务会被交付给一个[工人].在这一部分我们将做一些完全不同的事情--我们将向多个[消费者]传递信息.这种模式被称为“发布/订阅”. 为了说明这种模式,我们将构建一个简单的日志系统.它将包括两个程序,第一个将发出日志消息,第二个将接收并打印它们. 在我们的日志系统中每个接收程序的运行副本都会得到消息.…
前言:ActiveMQ学习心得 1.MQ是什么 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.其中较为成熟的MQ产品有IBM WEBSPHERE MQ.Apache ActiveMQ等等. 1.1.ActiveMQ的概述 ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信.…
一.kafka 简介 今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 以上几个挑战形成了一个业务需求模型,即生产者生产(produce)各种信息,消费者消费(consume)(处理分析)这些信息,而在生产者与消费者之间,需要一个沟通两者的桥梁-消息系统.从一个微观层面来说,这种需求也可理解为不同的系统之间如何传递消息. kafka是一种高吞吐量的分布式发布订阅消息系统…
一.redis发布订阅 Redis 通过 PUBLISH .SUBSCRIBE 等命令实现了订阅与发布模式. 其实从Pub/Sub的机制来看,它更像是一个广播系统,多个Subscriber可以订阅多个Channel,多个Publisher可以往多个Channel中发布消息.可以这么简单的理解: - Subscriber:收音机,可以收到多个频道,并以队列方式显示: - Publisher:电台,可以往不同的FM频道中发消息: - Channel:不同频率的FM频道: 一个Publisher,多个…
一:kafka介绍kafka(官网地址:http://kafka.apache.org)是一种高吞吐量的分布式发布订阅的消息队列系统,具有高性能和高吞吐率. 1.1 术语介绍BrokerKafka集群包含一个或多个服务器,这种服务器被称为brokerTopic主题:每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic.(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于…
如果熟悉C#语言的小伙伴们一般都会知道委托.事件的好处,只需在某个类中提前定义好公开的委托或事件(委托的特殊表现形式)变量,然后在其它类中就可以很随意的订阅该委托或事件,当委托或事件被触发执行时,会自动通知所有的订阅者进行消费处理.(观察者模式用委托来实现是最好不过了,DDD所提倡的事件驱动其根本理念也是如此),当然我这里想到的是不需要在每个类中进行定义委托或事件,而是由一个统一的中介者(即EventPublishSubscribeUtils)来提供事件的订阅及发布操作,这样各模块之间无需直接依…
一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.NET Socket Tcp 技术实现的分布消息总线,也是一个简单的发布订阅框架: 并且以案例的形式为大家演示了如何使用这个分布式消息总线架构发布订阅架构模式的应用程序,在得到各位同仁的反馈的同时,大家也非常想了解订阅者离线的情况,即支持离线构发布订阅框架. 二.离线架构 不同于订阅者.发布者都同时在…