rabbitmq多个消费者监听一个队列_RabbitMQ详解

本文深入探讨RabbitMQ的高性能原因、AMQP协议、整体架构以及核心组件。重点讲解了RabbitMQ的五种工作模式,包括点对点、工作队列、发布/订阅、路由和主题模式。此外,还详细阐述了如何通过AMQP事务、Confirm模式和Return消息机制保障消息的可靠传递,以及消费者端的重试机制和幂等性保障策略,确保系统稳定性和数据一致性。
摘要由CSDN通过智能技术生成

RabbitMQ的优点:

  • 开源, 性能有效, 稳定性好
  • 提供可靠性消息投递模式(confirm), 返回模式(return)等
  • 与Spring完美整合, API丰富
  • 集群模式丰富, 支持表达式配置, 高可用HA模式, 镜像队列模型
  • 可以保证数据不丢失的前提下做到高可靠性, 可用性
RabbitMQ高性能原因:
  • 由Erlang语言开发,继承其天生的并发性,稳定性和安全性有保障
RabbitMQ的协议:

AMQP(Advanced Message Queuing Protocol)高级消息队列协议,是一个异步消息传递所使用应用层协议规范,为面向消息中间件设计,基于此协议的客户端与消息中间件可以无视消息来源传递消息,不受客户端、消息中间件、不同的开发语言环境等条件的限制。

71bf9b01694c69921048561c39b3ff57.png

设计概念解释:

  • Server : 又称Broker, 接受客户端连接, 实现AMQP实体服务
  • Connection : 连接, 应用程序与Broker的网络连接
  • Channel : 网络信道, 几乎所有的操作都在Channel中进行, Channel是进行消息读写的通道。客户端可以建立多个Channel, 每个Channel代表一个会话任务。
  • Message : 消息, 服务器和应用程序之间传送的数据, 有Properties和Body组成。Properties可以对消息进行修饰, 比如消息的优先级, 延迟等高级特性; Body就是消息体内容。
  • Virtual Host : 虚拟地址, 用于进行逻辑隔离, 最上层的消息路由。一个Virtual Host里面可以有若干个Exchange和Queue, 同一个Virtual Host里面不能有相同名称的Exchange或Queue
  • Exchange : 交换机, 用于接收消息, 根据路由键转发消息到绑定的队列
  • Binding : Exchange和Queue之间的虚拟连接, binding中可以包含routing key
  • Routing Key : 一个路由规则, 虚拟机可用它来确定如何路由一个特定消息
  • Queue : 也成Message Queue, 消息队列, 用于保存消息并将它们转发给消费者
RabbitMQ整体架构
264b6ef8a554fd85f1eb14705764a783.png

RabbitMQ成员简介

Binding-绑定

  • Exchange和Exchange, Queue之间的连接关系
  • 绑定中可以包含RoutingKey或者参数

Queue-消息队列

  • 消息队列, 实际存储消息数据
  • Durability : 是否持久化
  • Auto delete : 如选yes,代表当最后一个监听被移除之后, 该Queue会自动被删除

Message-消息

  • 服务和应用程序之间传送的数据
  • 本质上就是一段数据, 由Properties和Payload(Body)组成
  • 常用属性 : delivery mode, headers(自定义属性)
  • 其他属性content_type
  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值