rabbitmq 同步策略_RabbitMQ使用分析和高可用集群搭建

一、RabbitMQ 基础理解

RabbitMQ,是一个使用 erlang 编写的 AMQP(高级消息队列协议)的服务实现,简单来说,就是一个功能强大的消息队列服务。

概念理解:

Producer: 消息发送者

RabbitMQ:

Vhost: 相当于分组,每个vhost下数据是隔离的

Exchange: 路由器,接收消息,本根据RoutingKey分发消息

headers:消息头类型 路由器,内部应用

direct:精准匹配类型 路由器

topic:主题匹配类型 路由器,支持正则 模糊匹配

fanout:广播类型 路由器,RoutingKey无效

RoutingKey: 路由规则

Queue: 队列,用于存储消息(消息的目的地)

Consumer: 消息消费者

持久化:

一个好的消息队列当然需要消息持久化功能,服务宕机,未消费消息不丢失,RabbitMQ持久化分为Exchange、Queue、Message

Exchange 和 Queue 持久化 指持久化Exchange、Queue 元数据,持久化的是自身,服务宕机,Exchange 和 Queue 自身就没有了

Message 持久化 顾名思义 把每一条消息体持久化,服务宕机,消息不丢失

Durable 持久、Transient 临时,Queue新建类似

分析理解:

便于更直观的理解,把 RabbitMQ 的消息流对比与Http Rest接口更家熟悉形象

www.xxx.com/webappPath/trade/getOrder -> getOrder(message) GET

RabbitMQ Server:同比 域名 www.xxx.com,只有通过域名才能到达 Server

Vhost:同比 /webappPath,一个域名可能指向多个app

Exchange:同比 /trade,trade/* 下有多个method,但是需要先到达这个Class

RoutingKey:同比 /getOrder,只有完成的 URL 才是有效的,才能确定到具体的方法                  Queue:同比 getOrder(message) 消息的最终目的地

Exchange Type:  同比 GET,但是Rest MethodType是整个URL的Type,而不是 Queue

以上只是为了更好理解,千万不要混淆

Producer / Consumer 就很好理解了,基于AMQP协议链接RabbitMQ Server,发送消息 / 接收消息

二、RabbitMQ 消息确认策略分析

Confrim / Transaction 概念应用

RabbitMQ 提供了两种可靠性的确认策略 Confrim / Transaction,Producer Client仅分析Spring-Amqp,两种机制主要影响发送:

Confrim: 简单说就是直接传送消息 client > mq, 接收到 mq > ack, mq 在异步的完成 接下来的事情

Transaction: client 请求开启事务  > 发送message > client 提交事务,整个过程是同步的,mq必须完成消息持久化、消息同步等。

spring-amqp  提供的发送客户端 默认是Confrim 异步Ack模式,不用特殊配置,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值