RabbitMQ 2
Posted csj007523
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RabbitMQ 2相关的知识,希望对你有一定的参考价值。
RabbitMQ :
1.优先级队列
交换机exchange揭秘
direct交换机 (直接交换器)
fanout交换机 (广播是式交换器)
topic交换机 (主题交换器)
headers交换机 (消息体的header匹配)
消息持久化,消息扩容
1. Direct(直接交换器) Exchange:直接交换器,工作方式类似于单播,Exchange会将消息 发送完全匹配ROUTING_KEY的Queue
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;
以上是关于RabbitMQ 2的主要内容,如果未能解决你的问题,请参考以下文章