一、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 […]
View Details