热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RabbitMQ和AMQP协议简介(RabbitMQ学习笔记1)

文章目录一、RabbitMQ简介1.1RabbitMQ的优势二、AMQP协议2.1AMQP简介2.2AMQP核心概念一、RabbitMQ简介RabbitMQ是一个开源的消息代理和


文章目录

    • 一、RabbitMQ简介
        • 1.1 RabbitMQ的优势
    • 二、AMQP协议
        • 2.1 AMQP简介
        • 2.2 AMQP核心概念


一、RabbitMQ简介

RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。


1.1 RabbitMQ的优势


  1. 开源、性能优秀,稳定性保障
  2. 提供可靠性消息投递模式(confirm)、返回模式(return)
  3. 与SpringAMQP完美的整合、API丰富
  4. 集群模式丰富,表达式配置,HA模式,镜像队列模型
  5. 保证数据不丢失的前提做到高可靠性、可用性

二、AMQP协议


2.1 AMQP简介

AMQP全称:Advanced Message Queuing Protocol 也就是高级消息队列协议的意思。
AMQP协议模型如下图所示:消息生产者将消息投递到Exchange中,Exchange将消息转发到相应的队列中。消费者只需要监听Message Queue消息队列即可。
在这里插入图片描述


2.2 AMQP核心概念

Server: MQ服务器又称Broker,用于接收客户端的连接,实现AMQP实体服务。
Connection: 应用程序和Broker建立网络连接
Channel: 网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道。客户端可建立多个Channel,每个Channel代表一个会话任务。
Message: 消息,服务器和应用程序之间传送的数据,由Properties和Body组成。Properties可以对消息进行设置,比如消息的优先级、延迟等高级特性;Body就是消息体内容。
Virtual host: 虚拟主机,用于进行逻辑隔离,最上层的消息路由,将不同的服务划分开。一个Virtual Host里面可以有若干个Exchange和Queue,同一个Virtual Host 里面不能有相同名称的Exchange或Queue(注: 这里解释一下逻辑隔离,如果你接触过redis就应该知道,redis中默认划分了16个数据库,db0—db15。如果总共的内存空间是16G,那么这16G并不是平均分配给一个数据库的,你可以只利用一个数据库去使用全部的16G内存空间。所以这16个数据库只是在逻辑上被区分开,并没有在物理空间上进行划分。)
Exchange: 交换机,接收消息,根据路由键转发消息到绑定的队列。
Binding: Exchange和Queue之间的虚拟连接,binding中可以包含routing key
Routing key: 路由键,一个路由规则,Exchange可用它来确定如何路由一个信息到指定的队列
Queue: 也就是Message Queue,消息队列,保存消息并将它们转发给消费者


推荐阅读
  • RabbitMq的最终一致性分布式事务
    RabbitMq的最终一致性分布式事务使用rabbitmq的步骤1.运行安装在服务器上的rabbit服务2.在项目中安装依赖3.编写对应的配置文件4.创建对应配置并加上启动注解5. ... [详细]
  • RabbitMq之发布确认高级部分1.为什么会需要发布确认高级部分?在生产环境中由于一些不明原因,导致rabbitmq重启,在RabbitMQ重启期间生产者消息投递失败,导致消息丢 ... [详细]
  • RabbitMQ的消息持久化处理
    1、RabbitMQ的消息持久化处理,消息的可靠性是RabbitMQ的一大特色,那么RabbitMQ是如何保证消息可靠性的呢——消息持久化。2、auto ... [详细]
  • RabbitMQ消息中间件快速入门:SpringBoot整合生产者与消费者
    前言本章我们来一次快速入门RabbitMQ——生产者与消费者。需要构建一个生产端与消费端的模型。什么意思呢?我们的生产者发送一条消息,投递到RabbitMQ集群也就是Broker。 ... [详细]
  • 讨伐Java多线程与高并发——MQ篇
    本文是学习Java多线程与高并发知识时做的笔记。这部分内容比较多,按照内容分为5个部分:多线程基础篇JUC篇同步容器和并发容器篇线程池篇MQ篇本篇 ... [详细]
  •  Rabbitmq是对AMQP协议的一种实现。使用范围也比较广泛,主要用于消息异步通讯。 ... [详细]
  • SpringBoot和RabbitMq集成的时候,引入compile(org.springframework.boot:spring-boot-starter-amqp)在运行 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 消息中间件RabbitMQ 高级特性之消费端ACK与重回队列
    什么是消费端的ACK和重回队列?消费端的手工ACK和NACK消费端进行消费的时候,如果由于业务异常我们可以进行日志的记录,然后进行补偿如果由于服务器宕机等严重问题 ... [详细]
  • 6(自)、交换机之关键字模式
    上一节中的我们的日志系统将所有消息广播给所有消费者,对此我们想做一些改变,例如我们希望将日志消息写入磁盘的程序仅接收严重错误(error),而不存储那些警告(warnning)或者 ... [详细]
  • 【Hoxton.SR1版本】Spring Cloud Stream消息驱动
    目录一、简介二、搭建消息生产者端三、搭建消息消费者端四、消息重复消费问题五、消息持久化六、总结一、简介在实际项目中,服务与服务之间的通信往往我们会采用消 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • C++ STL复习(13)容器适配器
    STL提供了3种容器适配器,分别为stack栈适配器、queue队列适配器以及priority_queue优先权队列适配器。不同场景下,由于不同的序列式 ... [详细]
author-avatar
壞小籽z_339
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有