做网站每年运营要花掉多少钱网站页面建设方案书模板
做网站每年运营要花掉多少钱,网站页面建设方案书模板,建设官方网站意义,有哪些可以免费推广的网站安装与配置
安装 RabbitMQ
读者可以在 RabbitMQ 官方文档中找到完整的安装教程#xff1a;Downloading and Installing RabbitMQ — RabbitMQ
本文使用 Docker 的方式部署。
RabbitMQ 社区镜像列表#xff1a;https://hub.docker.com/_/rabbitmq
创建目录用于映射存储卷…安装与配置
安装 RabbitMQ
读者可以在 RabbitMQ 官方文档中找到完整的安装教程Downloading and Installing RabbitMQ — RabbitMQ
本文使用 Docker 的方式部署。
RabbitMQ 社区镜像列表https://hub.docker.com/_/rabbitmq
创建目录用于映射存储卷
mkdir -p /opt/lib/rabbitmq部署容器
docker run -itd --name rabbitmq -p 5672:5672 -p 15672:15672 \
-v /opt/lib/rabbitmq:/var/lib/rabbitmq \
rabbitmq:3.12.8-management部署时占用两个端口。5672 是 MQ 通讯端口15672 是 Management UI 工具端口。
打开 15672 端口会进入 Web 登录页面默认账号密码都是 guest。 关于 RabbitMQ Management UI 的使用方法后续再介绍。 打开管理界面后会在 Exchanges 菜单中可以看到如下图表格。这些是默认的交换器。现在可以不需要了解这些东西后面会有介绍。
Virtual hostNameTypeFeatures/(AMQP default)directD/amq.directdirectD/amq.fanoutfanoutD/amq.headersheadersD/amq.matchheadersD/amq.rabbitmq.tracetopicD I/amq.topictopicD 发布与订阅模型
使用 C# 开发 RabbitMQ需要使用 nuget 引入 RabbitMQ.Client官网文档地址.NET/C# RabbitMQ Client Library — RabbitMQ
在继续阅读文章之前请先创建一个控制台程序。
生产者、消费者、交换器、队列
为了便于理解本文制作了几十张图片约定一些图形表示的含义
对应生产者使用如下图表示 对于消费者使用如下图表示 对于消息队列使用如下图表示 对于交换器使用如下图表示 在 RabbitMQ 中生产者发布的消息是不会直接进入到队列中而是经过交换器(Exchange) 分发到各个队列中。前面提到部署 RabbitMQ 后默认有 七个交换器如 (AMQP default)、amq.direct 等。
当然对于现在来说我们不需要了解交换器所以在本节的教程中会使用默认交换器完成实验。
在忽略交换器存在的情况下我们可以将生产和消费的流程简化如下图所示 请一定要注意图中省略了交换器的存在因为使用的是默认的交换器。但是生产者推送消息必须是推送到交换器而不是队列这一句一定要弄清楚。 对于消费者来说要使用队列必须确保队列已经存在。 ConnectionFactory factory new ConnectionFactory
{HostName localhost
};// 连接
using IConnection connection factory.CreateConnection();// 通道
using IModel channel connection.CreateModel();channel.QueueDeclare(// 队列名称queue: myqueue,// 持久化配置队列是否能够在 broker 重启后存活durable: false,// 连接关闭时被删除该队列exclusive: false,// 当最后一个消费者(如果有的话)退订时是否应该自动删除这个队列autoDelete: false,// 额外的参数配置arguments: null);编写一个消费者消费该队列中的消息其完整代码如下
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System.Text;ConnectionFactory factory new ConnectionFactory
{HostName localhost
};using IConnection connection factory.CreateConnection();
using IModel channel connection.CreateModel();channel.QueueDeclare(// 队列名称queue: myqueue,// 持久化配置队列是否能够在 broker 重启后存活durable: false,// 连接关闭时被删除该队列exclusive: false,// 当最后一个消费者(如果有的话)退订时是否应该自动删除这个队列autoDelete: false,// 额外的参数配置arguments: null);// 定义消费者
var consumer new EventingBasicConsumer(channel);
consumer.Received (model, ea)
{var message Encoding.UTF8.GetString(ea.Body.Span);Console.WriteLine($ [x] Received {message});
};// 开始消费
channel.BasicConsume(queue: myqueue,autoAck: true,consumer: consumer);Console.ReadLine();
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89984.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!