===记录下本人在win10环境下安装RabbitMQ的步骤,以作备忘。
1:下载并双击安装,并且配置系统变量path;C:Program Fileserl10.5in
erlang(esl-erlang_22.1_windows_amd64.exe)
原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。
下载地址:http://www.erlang.org/downloads
2,下载rabbitmq_server-3.8.3 下载地址:http://www.rabbitmq.com/download.html
解压进入目录: C:Program Fileser_rabbitmq_server-3.8.3sbin
以管理员身份CMD运行:rabbitmq-service install
以管理员身份CMD运行:rabbitmq-plugins enable rabbitmq_management
以管理员身份CMD运行:rabbitmqctl status
3. 双击 rabbitmq-service.bat
等几秒钟看到界面出现starting 后,访问http://localhost:15672
===RabbitMQ :
1.优先级队列
交换机exchange揭秘
direct交换机 (直接交换器):消息发送到绑定的交换机指定的队列集上的队列routingkeyqueue上
fanout交换机 (广播是式交换器):消息发送到绑定的交换机指定的队列集上
topic交换机 (主题交换器):消息发送到绑定的交换机指定的队列集上的队列routingkeyqueue上,routingkeyqueue可以模糊匹配,分组,打标签;
headers交换机 (消息体的header匹配),不依赖于routingkey,动态的拼装key-value,到达消息的灵活的转发到不同的消息队列中;
消息持久化,消息扩容
1. Direct(直接交换器) Exchange:直接交换器,工作方式类似于单播,Exchange会将消息 发送完全匹配ROUTING_KEY的Queue(一个消息发送到一个队列的routingkey中);
2 Fanout(绑定式交换器)Exchange:fanout类型的Exchange路由规则非常简单,它会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中(一个消息发送到多个队列中;)
3 Topic (主题交换器) Exchange:通配符,模糊匹配绑定
4 Header (消息体的header匹配) Exchange:不依赖于routing key与binding key的匹配规则来路由消息,any或者all参数匹配。如果设置为any,意思就是只要匹配到了headers表中的任何一个键值
2.消息确认机制
消息事务机制
分布式异步队列事务问题
RabbitMQ集群
RabbitMQ普通集群
RabbitMQ镜像集群
消息确认机制:
Confirm模式
Tx事务模式
Confirm模式:就是应答模式,生产者发送一条消息之后,Rabbitmq服务器做了个响应,OK,收到了;
Tx事务模式:基于AMPQ协议;可以让信道设置成一个带事务的信道,分为三步:
1.开启事务
2.提交事务
3.支持回滚
Confirm模式:异步模式,在应答之前,可以继续发送消息;单条消息、批量消息
事务模式:同步模式,在事务提交之前不能继续发送消的
事务模式效率差一些;
0.channel.ConfirmSelect();开启确认模式
1. 单条消息确认: channel.waitForConfirms()
2。批量消息确认: channel.waitForConfirmsOrDie()批量确认模式
3。 异步监听消息确认:channel.addConfirmListener()
channel.ConfirmSelect();开启确认模式
消息发送以后,提供一个回执方法WaitForConfirms(); 返回一个bool 值
从AMQP协议层面上来的事务模式;
channel.TxSelect(); 开启一个事务
channel.TxCommit();提交事务
channel.TxRollback(); //事务回滚
//手动确认 消息正常消费 告诉Broker:你可以把当前这条消息删除掉了
channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
//autoAck: true 自动确认;
channel.BasicConsume(queue: "ConsumptionACKConfirmQueue", autoAck: false, consumer: consumer);
//设置优先级
IBasicProperties props = channel.CreateBasicProperties();
props.Priority = 1;
//消息持久化,自动写到硬盘中;
IBasicProperties basicProperties = channel.CreateBasicProperties();
basicProperties.Persistent = true;
dotnet AspNetCore.RabbitMQ.MessageProducer.dll
什么是分布式异步队列
大数据高并发系统架构
异步队列的作用和意义
常见的队列组件和优势
异步队列学习必备组件RabbitMQ
RabbitMQ的环境搭建中的那些坑儿
C#驱动RabbitMQ
生产者消费者模式
分布式异步队列的优先级队列
LogExchange
ve_infoQueue
ve_errorQueue
1.消息的持久化;
2.生产端消息的确认;
3.消费端消息的确认;
typora md 工具
mobaxterm
手动确认:消息正常消费,告诉broker:你可以把当前这条消息删除了
channel.BasicAck(deliveryTag:ea.DeliveryTag,multiple:false);
自动确认:
接受1条就删除所有的消息;