![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RabbitMQ
laoxilaoxi_
码农,邮箱laoxilaoxi@foxmail.com
展开
-
《RabbitMQ实战》11.提升性能,保障安全
一、对速度的需求 消息持久化:持久化消息降低投递性能 消息确认:降低性能 路由算法与绑定规则 direct:查询一条 fanout:忽略路由键,查询所有路由关系 topic:占用内存更多,性能低 二、消息投递 ...原创 2020-05-20 09:36:57 · 225 阅读 · 0 评论 -
《RabbitMQ实战》7.warren和Shovel:故障转移和复制
一、warren模式 模式1:每个MQ服务器都是独立的,当主节点故障后,故障转移工具会将其切换到副节点上,可以发布新消息,消费新消息。待故障节点恢复,也允许消费者重新连接到该节点进行消息消费。 模式2:每个节点是相互独立的,但共享存储,当主节点故障后,故障转移工具会将其切换到副节点上,可以继续发布新消息,也可消费新消息,因为存储共享,也可以消费旧消息。 二、远距离通信和复制 生产者发布一个消息到MQ1服务器的交换器,交换器路由到队列1中,然后通过Shovel复制到MQ2服务.原创 2020-05-20 09:34:22 · 305 阅读 · 0 评论 -
《RabbitMQ实战》6.从故障中恢复
一、为RabbitMQ做负载均衡 二、连接丢失和从故障中恢复 消费者感知恢复,代码如下 while(true){ try{ //建立连接 //创建队列、交换器、绑定关系 //监听队列 }catch(Exception e){ //打印错误 } } 生产者感知恢复,代码如下 send(){ //建立连接 //发送消息 } ...原创 2020-05-20 09:31:36 · 179 阅读 · 0 评论 -
《RabbitMQ实战》5.集群并处理失败
一、集群架构 RabbitMQ始终会记录元数据: 队列元数据:队列的名称及属性(持久化、自动删除) 交换器元数据:交换器名称及属性(持久化) 绑定元数据:消息路由绑定表 vhost元数据:vhost的队列、交换器、绑定关系及安全属性。 二、集群 每个节点都会有完整的交换机与队列元数据,但是仅有一个节点有真正的队列及队列内容,发布消息时,其他节点需要将消息传递给拥有改队列的节点;消费消息亦是如此。 三、镜像队列 创...原创 2020-05-20 09:29:39 · 255 阅读 · 0 评论 -
《RabbitMQ实战》4.解决Rabbit相关问题:编码与模式
一、解耦 接收订单与处理订单解耦 很大程度的提高了接单的吞吐量,并且也很容易进行处理能力的扩展。 订单系统与订单处理也不用关心对方使用的啥语言,降低对接成本。 二、发后即忘 1)批处理:异步化批处理任务。 2)告警通知:可以利用direct或者topic方式 3)并发处理:可以使用fanout模式 三、RabbitMQ实现RPC并等待响应 服务端、客户端与RabbitMQ的调用关系,如下图 服务端、客户端流程图如下 ...原创 2020-05-20 09:28:57 · 252 阅读 · 0 评论 -
《RabbitMQ实战》2.理解消息通信
一、队列 1)消费消息 通过AMQP的basic.consume命令订阅。 通过AMQP的basic.get从队列获取单条消息。 队列有多个消费者,则会采取循环(round-robin)的方式发给消费者。 消息必须确认:可以是通过AMQP的basic.ack显式确认或者订阅队列时设置auto_ack为true。 拒绝消息:可以通过AMQP的basic.reject消息或者消费者从RabbitMQ服务器断开连接。reject的话存在两种情况,requeue设..原创 2020-05-20 09:27:48 · 141 阅读 · 0 评论