专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

RabbitMQ官方NET教程(三)发布订阅

  上一篇博客中,我们实现了工作队列,并且我们的工作队列中的一个任务只会发给一个工作者,除非某个工作者未完成任务意外被杀死,会转发给另外的工作者。在这部分中,我们会做一些完全不同的事情我们会向多个消费者传递信息。这种模式被称为发布订阅。
  为了说明这个模式,我们要建立一个简单的日志记录系统。它将包括两个程序第一个将发出日志消息,第二个将接收并打印它们。
  在我们的日志系统中,每一个运行的接收者程序都会收到日志。这样我们就可以实现一个接收者将接收到的数据写到硬盘上,与此同时,另一个接收者把接收到的消息展现在屏幕上。
  本质上来说,就是已发布的日志消息将被广播到所有接收者。转发器(Exchanges)
  前面的博客中我们主要的介绍都是发送者发送消息给队列,接收者从队列接收消息。下面我们会引入Exchanges,展示RabbitMQ的完整的消息模型。
  让我们快速了解我们在以前的教程中介绍的内容:生产者是发送消息的用户应用程序。队列是存储消息的缓冲区。消费者是接收消息的用户应用程序。
  RabbitMQ中的消息传递模型的核心思想是,生产者从不将任何消息直接发送到队列。实际上,生产者通常甚至不知道是否将消息传递到任何队列。
  相反,生产者只能将信息发送到exchange。交换是一件非常简单的事情。一方面,它收到来自生产者的消息,另一方将它们推送到队列。交换机必须准确知道接收到的消息如何处理。应该追加到特定队列吗?应该追加到很多队列吗?或者应该丢弃。其规则由exchange类型定义。
  有几种交换类型可用:direct,topic,headers和fanout。我们将重点关注最后一个fanout。我们创建一个这种类型的exchange,并称它为logs:channel。ExchangeDeclare(logs,fanout);
  fanout交换器非常简单。正如您可以从名称猜出,它只是将所有收到的消息广播到所有知道的队列。这正是我们需要的记录器。列出交换机
  要列出服务器上的交换机,您可以运行有用的rabbitmqctl:sudorabbitmqctllistexchanges
  在这个列表中会有一些amq。交换和默认(未命名)交换。这些是默认创建的,但是不太可能需要使用它们。默认交换
  在本教程的前面部分,我们对交换没有任何了解,但仍然能够将消息发送到队列。这是可能的,因为我们使用默认交换,我们通过空字符串()标识。
  回想一下我们之前发布的消息:varmessageGetMessage(args);varbodyEncoding。UTF8。GetBytes(message);channel。BasicPublish(exchange:,routingKey:hello,basicProperties:null,body:body);
  第一个参数是交换的名称。空字符串表示默认或无名交换:消息通过路由Key指定的名称路由到队列(如果存在)。
  现在,我们可以发布到我们命名的交换机:varmessageGetMessage(args);varbodyEncoding。UTF8。GetBytes(message);channel。BasicPublish(exchange:logs,routingKey:,basicProperties:null,body:body);临时队列(Temporaryqueues)
  前面我们使用的是具有指定名称的队列(记得hello和taskqueue?)。能够命名队列对我们而言至关重要我们需要将工作者指向同一个队列。当您想要在生产者和消费者之间共享队列时,给队列一个名字很重要。
  但是我们的日志系统我们并不关心队列的名称。我们希望接收到所有的日志消息,而不仅仅是它们的一部分。而且我们也只对当前正在传递的数据的感兴趣。要解决我们的需,要做两件事情。
  首先,每当我们连接到Rabbit,我们需要一个新的空的队列。为此,我们可以创建一个具有随机名称的队列,或者甚至更好让服务器为我们选择一个随机队列名称。
  其次,一旦消费者与Rabbit断开,队列应该被自动删除。
  在。NET客户端中,当我们没有为queueDeclare()提供参数时,我们创建了一个不可持续的,独占的,自动删除的队列,其中包含一个生成的名称:varqueueNamechannel。QueueDeclare()。QueueName;
  此时,queueName包含一个随机队列名称。例如,它可能看起来像amq。genJzTY20BRgKOHjmUJj0wLg。绑定(Bindings)
  我们已经创建了一个扇出交换和一个队列。现在我们需要告诉交换机发送消息到我们的队列。交换和队列之间的关系称为绑定(binding)。channel。QueueBind(queue:queueName,exchange:logs,routingKey:);
  从现在开始,logs交换器将追加消息到我们的队列。列出绑定
  你可以列出现有的绑定:rabbitmqctllistbindings完整的例子
  发出日志消息的生产者程序与上一个教程并没有太大的区别。最重要的变化是我们现在想将消息发布到我们的logs交换器,而不是无名的。发送时需要提供一个routingKey,但是对于fanout交换来说,它的值被忽略。这里是EmitLog。cs文件的代码:usingSystem;usingRabbitMQ。Client;usingSystem。Text;classEmitLog{publicstaticvoidMain(string〔〕args){varfactorynewConnectionFactory(){HostNamelocalhost};using(varconnectionfactory。CreateConnection())using(varchannelconnection。CreateModel()){channel。ExchangeDeclare(exchange:logs,type:fanout);varmessageGetMessage(args);varbodyEncoding。UTF8。GetBytes(message);channel。BasicPublish(exchange:logs,routingKey:,basicProperties:null,body:body);Console。WriteLine(〔x〕Sent{0},message);}Console。WriteLine(Press〔enter〕toexit。);Console。ReadLine();}privatestaticstringGetMessage(string〔〕args){return((args。Length0)?string。Join(,args):info:HelloWorld!);}}
  如你所见,建立连接后,我们声明交换。此步骤是必须的,因为禁止发布到不存在的交换机。
  如果没有任何队列绑定到交换机,消息将丢失,但是对我们来说没关系;如果没有消费者正在收听,我们可以放心地放弃信息。
  ReceiveLogs。cs的代码:usingSystem;usingRabbitMQ。Client;usingRabbitMQ。Client。Events;usingSystem。Text;classReceiveLogs{publicstaticvoidMain(){varfactorynewConnectionFactory(){HostNamelocalhost};using(varconnectionfactory。CreateConnection())using(varchannelconnection。CreateModel()){channel。ExchangeDeclare(exchange:logs,type:fanout);varqueueNamechannel。QueueDeclare()。QueueName;channel。QueueBind(queue:queueName,exchange:logs,routingKey:);Console。WriteLine(〔〕Waitingforlogs。);varconsumernewEventingBasicConsumer(channel);consumer。Received(model,ea){varbodyea。Body;varmessageEncoding。UTF8。GetString(body);Console。WriteLine(〔x〕{0},message);};channel。BasicConsume(queue:queueName,noAck:true,consumer:consumer);Console。WriteLine(Press〔enter〕toexit。);Console。ReadLine();}}}
  按照教程一的安装说明生成EmitLogs和ReceiveLogs项目。
  如果要将日志保存到文件,只需打开控制台并键入:cdReceiveLogsdotnetrunlogsfromrabbit。log
  如果您希望在屏幕上看到日志,则产生一个新的终端并运行:cdReceiveLogsdotnetrun
  当然,要发射日志类型:cdEmitLogdotnetrun
  使用rabbitmqctllistbindings,您可以验证代码是否按照我们想要的方式创建绑定和队列。运行两个ReceiveLogs。cs程序时,您应该看到如下所示:sudorabbitmqctllistbindingsListingbindings。。。logsexchangeamq。genJzTY20BRgKOHjmUJj0wLgqueue〔〕logsexchangeamq。genvso0PVvyiRIL2WoV3i48Ygqueue〔〕。。。done。
  对结果的解释很简单:来自交换机logs的数据转到具有服务器分配名称的两个队列。这正是我们的意图。

毛不易哪首歌最好听?毛不易作为一名中国内地流行乐男歌手,其演唱过的歌曲有许多,其中比较好听的也有不少。如消愁牧马城市像我这样的人梅香如故感觉自己是巨星和无问。其中最好听最受人喜欢的歌曲是消愁这一首歌曲胃不好的话每天吃花生对胃好吗?需要注意什么?相信很多的胃病患者都听说过花生养胃这么的一个道理,那么今天小克就来为大家科普一下花生对于胃病到底有没有养护的作用,哪些人群是要避免花生这一类食物。先来说一下花生中到底含有什么物质?67岁儿童营养餐有什么?67岁儿童营养餐有什么?67岁儿童没有固定的营养餐,应保证热量营养素的摄入,营养均衡,每天保证一杯奶,200250克蔬菜。67岁儿童为学龄童起始阶段,该年龄段宝宝的食谱已接近成人的注册bvi公司有哪些优势和坏处呢?您好,英属维京群岛(BritishVirginIslands)简称BVI,地处加勒比海,是前英国殖民地,现为英联邦成员国。目前,英属维尔京群岛已成为世界上最受欢迎的离岸公司注册地,中医的未来将何去何从?几千的中医治病论证源泉流长,淀积了相当的医理药理的底韵。中医医药治病应该还有所发展的,认为应该看好中医,没有必要考虑它何去何从的问题。中医治病是不会被淘汰的,但对保证中药药性的质量公务员工资1万到手多少钱?感谢您的邀请,我来回答公务员工资总额1万,如果按个人公积金扣8医保扣2,且有老人赡养上学子女抚养的情况下算,那每月发到手的为7776元,具体的我给您算一算一扣除五险一金养老保险个人全运会女排决赛天津冠军,预测新人谁能达到国家队的实力和水平?实话说,全运会新人真的不多,大多还是国手主打。要说新人的话,有也有,我来盘点下。首先,天津女排的王艺竹进攻很是凶猛,只需要加强一传防守,可以进入国家队去锻炼下。其次,江苏女排的00开车见到警察,当着警察的面,喝一瓶白酒,是否构成酒驾?博主提出的假设条件应该是在交警设卡查酒驾的情况下,那么你(驾驶机动车驾驶人)这个当着警察的面喝酒是在警察已对你进行过查验(吹气检测)后喝酒还是警察尚未对你进行查验时喝酒?这是很关键做投标工作的,你们月入多少?我也是做招投标这一方面的。这个行业刚入门薪资都比较低,跟普通的行政类型的岗位差不多,做了有几年之后,如果岗位有提成可算的话,收入慢慢增加。15年的时候开始接触这一行,刚入门的时候还退休后,又找了份工作,工资3000,怎么样?有人会说,既然退了休,拿着养老金,为何不舒舒服服在家颐养天年,还要再出来工作。现在就业这么难,先不说与年轻人争饭碗,自己岂不找罪受,何苦来呢!其实,你不懂。起码你不懂人退休后的心情你们有没有这样的经历,一些小时候听话的小孩,都没有一些不听话的小孩成功呢?你说的现象在我们周围的生活里比比皆是,为什么会出现这样的状况呢?第一,不安分的学生不是智商差,只是不喜欢读书而已。他们干什么事情要有闯劲,能够创新,不循规蹈矩,还善于与人沟通。第二
从3399元跌至2699元,从高端市场跌至中端市场,12GB512GB66W512GB储存容量严格来说并不算很大,很多人购买固态硬盘都直接是1TB起步,但是512GB的手机储存容量就不小了,以前绝大多数消费者所使用的手机,机身储存容量都只有128GB,不过A股今天再次跌破新低,说明更大的下跌很可能在后面在股市里大家总是喜欢用各种技术指标来研究股市,但其中最重要的就是成交量,因为成交量代表着股市的参与程度,而如果人人都选择观望,甚至不参与股市,那么股市怎么可能会迎来大涨,也就是说没两部门发文贷款抵押品扩容,包括生产设备应收账款知识产权。21世纪经济报道记者边万莉北京报道抵押贷款迎利好政策。近日,银保监会央行发布关于推动动产和权利融资业务健康发展的指导意见(以下简称指导意见),从应收账款融资商品和货权融资供应链融资长片段PCR扩不出来怎么办?普通的PCR只能扩增到34kb的DNA片段,但是很难扩增出来5kb以上的长片段基因,使PCR技术受到了很大限制。造成普通PCR扩增长片段限制的因素及一些解决方法有以下几点1。普通P彻底放开了?南京一大波房企,正在降价卖房还记得去年出来的限跌令吗,今年你还看过这种情况没?什么也拦不住开发商想活下的念头,汹涌的降价算什么,至少我还没躺平!当下越来越多的城市,撕裂了降价的大口子!开发商别问我能降多少,你短期蛋价下跌趋势明显短期蛋价下跌趋势明显今天全国鸡蛋价格还是较多区域稳定,北京持续稳如泰山,河北一掉再掉,两湖价高慢跌,产区差异太多,销区对两湖越来越谨慎,昨天湖北自己售卖的大型养殖户出货开始受阻,库不低于960元人!关于2023年湖南居民医保筹资标准,这些热点请知悉湖南日报全媒体记者周倜日前,湖南省医疗保障局国家税务总局湖南省税务局湖南省教育厅湖南省民政厅湖南省财政厅湖南省乡村振兴局湖南省残疾人联合会联合发布关于做好2023年度城乡居民基本医以改革谋突破一子落满盘活建设中的翠亨新区,这里成为中山投资热土。综述改革开放,是广东经济发展的根本动力敢为人先,是中山这座城市的精神传承。这十年,中山以改革谋突破,逐渐构建起高质量发展的体制机制。推动传统国庆节快乐A股有利好来了好久没有更文了,大家想姐姐了没。姐姐没有更文,是观察实际性的走势后果断给大家真实的答案,从而给大家更大的信心过度又一次难关。进入9月市场普跌后,可见绝多数个股再一次跌回去4月底最糟7年来首次!首套公积金贷款利率下调,100万30年贷款月供少81。9元买房人再迎利好政策,公积金贷款利率7年来首次下调。9月30日晚间,中国人民银行宣布,决定自2022年10月1日起,下调首套个人住房公积金贷款利率0。15个百分点,5年以下(含5年)9月30日复盘日记黎明前的黑暗,大盘将很快迎来修复温馨提示本人以认真务实的态度提供上证指数运行潮汐图,仅供参考,不构成任何投资建议。导读在金融市场中,要想生存下去需要巨大的耐心,而且要找到一些变化不太剧烈的因素。从这些因素中,找出
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网