当前位置: 首页 > news >正文

网站的网站建设公司哪家好网络自助服务平台

网站的网站建设公司哪家好,网络自助服务平台,营销网站建设推广,网站地图那么建设先决条件本教程假定RabbitMQ已经安装#xff0c;并运行在localhost标准端口#xff08;5672#xff09;。如果你使用不同的主机、端口或证书#xff0c;则需要调整连接设置。从哪里获得帮助如果您在阅读本教程时遇到困难#xff0c;可以通过邮件列表联系我们。1.发布/订阅… 先决条件本教程假定RabbitMQ已经安装并运行在localhost标准端口5672。如果你使用不同的主机、端口或证书则需要调整连接设置。从哪里获得帮助如果您在阅读本教程时遇到困难可以通过邮件列表联系我们。1.发布/订阅使用.NET客户端在教程[2]中我们创建了一个工作队列假设在工作队列中的每一个任务都只被分发给一个Worker。那么在这一章节我们要做与之完全不同的事那就是我们将要把一条消息分发给多个消费者。这种模式被称为“发布/订阅”。为了说明、体现这种模式我们将会建一个简单的日志系统。它将会包含两个程序 - 第一个用来发送日志消息第二个用来接收并打印它们。在我们建立的日志系统中每个接收程序的运行副本都会收到消息。这样我们就可以运行一个接收程序接收消息并将日志写入磁盘同时运行另外一个接收程序接收消息并将日志打印到屏幕上。实质上发布的日志消息将会被广播给所有的接收者。2.交换器在教程的前几部分我们是发送消息到队列并从队列中接收消息。现在是时候介绍Rabbit中完整的消息传递模型了。让我们快速回顾一下前面教程中的内容生产者是发送消息的用户应用程序。队列是存储消息的缓冲区。消费者是接收消息的用户应用程序。在RabbitMQ中消息传递模型的核心理念是生产者从来不会把任何消息直接发送到队列其实通常生产者甚至不知道消息是否会被分发到任何队列中。然而生产者只能把消息发送给交换器。交换器非常简单一方面它接收来自生产者的消息另一方面又会把接收的消息推送到队列中。交换器必须明确知道该如何处理收到的消息应该追加到一个特定队列中还是应该追加到多个队列中或者应该把它丢弃这些规则都被定义在交换器类型中。目前有这几种的交换器类型可用directtopicheaders和fanout。我们重点关注最后一个 -- fanout让我们来创建一个这种类型的交换器将其命名为logschannel.ExchangeDeclare(logs, fanout);fanout类型交换器非常简单。正如您可能从名字中猜出的那样它会把收到的所有消息广播到它已知的所有队列中。这恰巧是我们的日志系统所需要的。列举交换器要列举出服务器上的交换器您可以使用非常有用的rabbitmqctl命令行工具sudo rabbitmqctl list_exchanges执行上述命令后出现的列表中将会有一些amq.*交换器和默认未命名交换器。这些是默认创建的不过目前您可能用不到它们。默认交换器在教程的前些部分我们对交换器这一概念还一无所知但仍然可以把消息发送到队列。之所以这样是因为我们使用了一个用空字符串()标识的默认交换器。回顾一下我们之前如何发布消息var message GetMessage(args);var body Encoding.UTF8.GetBytes(message); channel.BasicPublish(exchange: ,routingKey: hello,basicProperties: null,body: body);第一个参数就是交换器的名称空字符串表示默认或匿名交换器将消息路由到routingKey指定的队列如果存在中。现在我们可以把消息发布到我们指定的交换器var message GetMessage(args);var body Encoding.UTF8.GetBytes(message); channel.BasicPublish(exchange: logs,routingKey: ,basicProperties: null,body: body);3.临时队列您是否还记得之前我们使用过的队列它们都有一个特定的名称记得应该是hello和task_queue吧。给队列命名对我们来说是至关重要的 -- 因为我们可能需要多个Worker指向同一个队列当您想要在生产者和消费者之间共享队列时给队列一个名称也是非常重要的。但是我们创建的日志系统并不希望如此。我们希望监听所有的日志消息而不仅仅是其中一部分。我们也只对目前流动的消息感兴趣而不是旧消息。为解决这个问题我们需要做好两件事。首先我们无论何时连接Rabbit都需要一个新的、空的队列。要做到这一点我们可以使用随机名称来创建队列或许甚至更好的方案是让服务器为我们选择一个随机队列名称。其次一旦我们与消费者断开连接与之相关的队列应该被自动删除。在.NET客户端中如果不向QueueDeclare()方法提供任何参数实际上就是创建了一个非持久化、独占、且自动删除的随机命名队列var queueName channel.QueueDeclare().QueueName;您可以在队列指南中了解更多关于exclusive参数和其他队列属性的信息。此时queueName包含一个随机队列名称。例如它看起来可能像amq.gen-JzTY20BRgKO-HjmUJj0wLg。4.绑定我们已经创建好了一个fanout交换器和一个队列。现在我们需要告诉交换器把消息发送到我们的队列。而交换器和队列之间的关系就称之为绑定。// 把一个队列绑定到指定交换器。channel.QueueBind(queue: queueName,                  exchange: logs,                  routingKey: );从现在起logs交换器会把消息追加到我们的队列中。列举绑定您可以使用您或许已经猜到了列举出现有的绑定。sudo rabbitmqctl list_bindings5.组合在一起生产者程序负责分发消息这与之前的教程看起来没有太大区别。最重要的变化是我们现在想把消息发布到我们的logs交换器而不是匿名交换器。在发送时我们需要提供一个路由键routingKey但是对于fanout交换器它的值可以被忽略。这里是EmitLog.cs文件的代码EmitLog.cs源码如你所见在建立连接后我们声明了交换器。这一步非常有必要因为发布消息到一个不存在的交换器这种情况是被禁止的。如果没有队列绑定到交换器上消息将会丢失但这对我们来说并没有什么没问题如果没有消费者正在监听我们是可以放心地把消息丢弃的。ReceiveLogs.cs的代码ReceiveLogs.cs源码按照教程[1]中的设置说明生成EmitLogs和ReceiveLogs项目。如果您想把日志保存到文件中只需打开一个控制台并输入cd ReceiveLogs dotnet run logs_from_rabbit.log如果你想在屏幕上看到日志我可以新开一个终端并运行cd ReceiveLogs dotnet run当然分发日志需要输入cd EmitLog dotnet run使用rabbitmqctl list_bindings命令您可以验证代码是否真正创建了我们想要的绑定和队列。当有两个ReceiveLogs.cs程序运行时您应该看到如下所示的内容sudo rabbitmqctl list_bindings# Listing bindings ...# logs    exchange        amq.gen-JzTY20BRgKO-HjmUJj0wLg  queue           []# logs    exchange        amq.gen-vso0PVvyiRIL2WoV3i48Yg  queue           []# ...done.对执行结果的解释简洁明了来自logs交换器的数据转发到了两个由服务器随机分配名称的队列。这正是我们期待的结果。想要了解如何监听消息的这一块内容让我们继续阅读教程[4]。6.写在最后本文翻译自RabbitMQ官方教程C#版本。本文介绍如与官方有所出入请以官方最新内容为准。水平有限翻译的不好请见谅如有翻译错误还请指正。原文链接RabbitMQ tutorial - Publish/Subscribe实验环境RabbitMQ 3.7.4 、.NET Core 2.1.3、Visual Studio Code最后更新2018-06-11作者Esofar出处http://www.cnblogs.com/esofar/p/rabbitmq-publish-subscribe.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://www.zqtcl.cn/news/270760/

相关文章:

  • 做图片网站中英网站搭建报价表
  • 酒类网站该怎么做网站建设协议
  • 怎么打帮人 做网站开发的广告双语言网站模版
  • 企业网站建设的实验报告广告公司网站建设方案
  • 安徽茶叶商城网站建设贵阳市花溪区建设局网站
  • 广西网站建设制作推广普通话倡议书
  • 最新网站建设的模板下载小制作作文400字
  • 海南省城乡建设部网站首页央视新闻
  • 高端白酒品牌有哪些网站怎么做才能得到更好的优化
  • 北京安慧桥网站建设青之峰做网站
  • 免费制作网站的平台推广网站多少钱
  • 怎么增加网站的收录量广西建设厅网站地址
  • flash网站方案料神wordpress建站教程
  • 杭州 企业 建网站蚌埠网站优化
  • 网站建设的分类黄骅港最新招聘
  • 门户网站建设和检务公开自查搜索引擎排名优化价格
  • 湘阴网站建设如何建立自己的网站
  • 国外的ps网站网页源代码翻译器
  • 六安马昌友优化营商环境 助推高质量发展
  • wdcp 配置网站什么是搜索引擎营销?
  • 东莞网站上排名建设银行网站登录不进去
  • 陕西建设厅八大员官方网站服装公司做哪个网站
  • 福建省住房和城乡建设厅网站站群 网站如何做
  • 网站换稳定服务器网页制造与网站建设论文
  • wordpress 产品目录seo技术是干什么的
  • 做里番网站犯法吗中建八局第一建设有限公司资质
  • 怎么制作网站教程电商seo建站优化价格表
  • 黄平网站建设网站建设公司广告 晴天娃娃
  • 中山市 有限公司网站建设网站建设 福步 2018
  • 英语网站开发中国桥梁建设公司排名