RabbitMQ运行机制和通讯过程介绍

这篇具有很好参考价值的文章主要介绍了RabbitMQ运行机制和通讯过程介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.RabbitMQ 环境搭建

参考我的另一篇:RabbitMQ安装及使用教程(最全版)常用语令_Elaine猿的博客-CSDN博客

RabbitMQ运行机制和通讯过程介绍,RabbitMQ,rabbitmq,分布式,消息队列,wireshark

2.RabbitMQ简介

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

技术知识背景介绍:

AMQP(Advanced Message Queuing Protocol)高级消息队列协议:它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。

  AMQP中消息的路由过程和JMS存在一些差别。AMQP中增加了Exchange和Binging的角色生产者把消息发布到Exchange上,消息最终到达队列并被消费者接收,而Binding决定交换器的消息应该发送到哪个队列。

RabbitMQ运行机制和通讯过程介绍,RabbitMQ,rabbitmq,分布式,消息队列,wireshark

3.RabbitMQ的优势:

  • 可靠性(Reliablity):使用了一些机制来保证可靠性,比如持久化、传输确认、发布确认等。
  • 灵活的路由(Flexible Routing):在消息进入队列之前,通过Exchange来路由消息。对于典型的路由功能,Rabbit已经提供了一些内置的Exchange来实现。针对更复杂的路由功能,可以将多个Exchange绑定在一起,也通过插件机制实现自己的Exchange。
  • 消息集群(Clustering):多个RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker。
  • 高可用(Highly Avaliable Queues):队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用
  • 多种协议(Multi-protocol):支持多种消息队列协议,如STOMP、MQTT等。
  • 多种语言客户端(Many Clients):几乎支持所有常用语言,比如Java、Python、.NET、Ruby等。
  • 管理界面(Management UI)提供了易用的用户界面,使得用户可以监控和管理消息Broker的许多方面。
  • 跟踪机制(Tracing):如果消息异常,RabbitMQ提供了消息的跟踪机制,使用者可以找出发生了什么。
  • 插件机制(Plugin System)提供了许多插件,来从多方面进行扩展,也可以编辑自己的插件。

4. rabbitmq服务介绍

  python使用rabbitmq服务,可以使用现成的类库pika、txAMQP或者py-amqplib。

4.1 rabbitmq关键词说明

RabbitMQ运行机制和通讯过程介绍,RabbitMQ,rabbitmq,分布式,消息队列,wireshark

  • Broker:消息队列服务器实体。
  • Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
  • Queue:消息队列载体,每个消息都会被投入到一个或多个队列。
  • Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
  • Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
  • vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。
  • producer/publisher:消息生产者,就是投递消息的程序。
  • consumer:消息消费者,就是接受消息的程序。
  • channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。

4.2 消息队列运行机制

(1)客户端连接到消息队列服务器,打开一个channel。
(2)客户端声明一个exchange,并设置相关属性。
(3)客户端声明一个queue,并设置相关属性。
(4)客户端使用routing key,在exchange和queue之间建立好绑定关系。
(5)客户端投递消息到exchange。
(6)exchange接收到消息后,就根据消息的key和已经设置的binding,将消息投递到一个或多个队列里。
注:在声明一个队列后,如果将其持久化,则下次不需要进行声明,因为该队列已经在RabbitMQ中了!!!

4.3 exchange类型

  • Direct 交换机
    特点:依据key进行投递
    例如绑定时设置了routing key为”hello”,那么客户端提交的消息,只有设置了key为”hello”的才会投递到队列。
  • Topic 交换机
    特点:对key模式匹配后进行投递,符号”#”匹配一个或多个词,符号””匹配一个词
    例如”abc.#”匹配”abc.def.ghi”,”abc.”只匹配”abc.def”。
  • Fanout 交换机
    特点:不需要key,采取广播模式,一个消息进来时,投递到与该交换机绑定的所有队列

5.wireshark抓包查看RabbitMQ通讯过程

  安装wireshark抓包工具
RabbitMQ运行机制和通讯过程介绍,RabbitMQ,rabbitmq,分布式,消息队列,wireshark

  过滤AMQP数据:
RabbitMQ运行机制和通讯过程介绍,RabbitMQ,rabbitmq,分布式,消息队列,wireshark

  整个流程如下:

RabbitMQ运行机制和通讯过程介绍,RabbitMQ,rabbitmq,分布式,消息队列,wireshark文章来源地址https://www.toymoban.com/news/detail-722798.html

到了这里,关于RabbitMQ运行机制和通讯过程介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 服务异步通讯——RabbitMQ

    微服务间通讯有同步和异步两种方式: 同步通讯 :就像打电话,需要实时响应。 异步通讯 :就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应,但是一个人却不能跟多个人同时通话。而发送邮件可以同时与多个人收发邮件,但是往往响应会有延

    2024年01月18日
    浏览(42)
  • 微服务——服务异步通讯RabbitMQ

     前置文章 消息队列——RabbitMQ基本概念+容器化部署和简单工作模式程序_北岭山脚鼠鼠的博客-CSDN博客 消息队列——rabbitmq的不同工作模式_北岭山脚鼠鼠的博客-CSDN博客 消息队列——spring和springboot整合rabbitmq_北岭山脚鼠鼠的博客-CSDN博客 目录 Work queues 工作队列模式  案例

    2024年02月15日
    浏览(54)
  • SpringCloud学习路线(9)——服务异步通讯RabbitMQ

    一、初见MQ (一)什么是MQ? MQ(MessageQueue) ,意思是 消息队列 ,也就是事件驱动架构中的Broker。 (二)同步调用 1、概念: 同步调用是指,某一服务需要多个服务共同参与,但多个服务之间有一定的执行顺序,当每一个服务都需要等待前面一个服务完成才能继续执行。

    2024年02月15日
    浏览(38)
  • RabbitMQ从入门到精通之安装、通讯方式详解

    1.1 现存问题 服务异步调用: 服务A如何保证异步请求一定能被服务B接收到并处理 削峰: 海量请求,如何实现削峰的效果,将请求全部放到一个队列中,慢慢的消费,这个队列怎么实现? 服务解耦: 如何尽量的降低服务之间的耦合问题,如果在订单与积分和商家服务解构,需

    2024年02月09日
    浏览(43)
  • Rabbitmq入门与应用(六)-rabbitmq的消息确认机制

    确认消息是否发送给交换机 配置 编码RabbitTemplate.ConfirmCallback ConfirmCallback 是一个回调接口,消息发送到 Broker 后触发回调,确认消息是否到达 Broker 服务器, 也就是只确认是否正确到达 Exchange 中。 在配置类中编码确认回调函数。tips: 设置 rabbitTemplate.setMandatory(true); 配置类

    2024年02月20日
    浏览(43)
  • SpringBoot集成RabbitMq,RabbitMq消费与生产,消费失败重发机制,发送签收确认机制

           这里spring-boot依赖版本为2.3.7版本,RabbitMq集成amqp包,版本在spring-boot中有涵盖,不单独指明版本了。 Exchange 交换机配置 队列queue配置 将队列和交换机绑定, 并设置用于匹配键 配置加载 RabbitTemplate 生产者 消费者 消息确认签收配置        消息确认签收机制不过多

    2024年01月21日
    浏览(43)
  • Java整合RabbitMQ实现生产消费(7种通讯方式)

    RabbitMQ环境,参考RabbitMQ环境搭建 Java版本:JDK1.8 Maven版本:apache-maven-3.6.3 开发工具:IntelliJ IDEA 创建maven项目 pom.xml文件引入RabbitMQ依赖 即一个生产者可以向一个队列发送消息,一个消费者可以尝试从一个队列接收数据。如下图: 与简单通讯一样,当消费能力不足或想要提高

    2024年02月04日
    浏览(45)
  • RabbitMQ——解决分布式事务问题,RabbitMQ的重要作用之一!!!通过可靠生产和可靠消费来完美解决!

    分布式事务是指涉及多个独立的计算机系统(也称为节点或参与者)之间的事务处理。在分布式系统中,每个节点可能各自拥有自己的数据存储和事务管理机制。分布式事务的目标是保证在跨多个节点执行的一系列操作可以以一致和可靠的方式执行和提交,即使在面对故障或

    2024年04月23日
    浏览(46)
  • 分布式消息队列:RabbitMQ(1)

    目录 一:中间件 二:分布式消息队列  2.1:是消息队列 2.1.1:消息队列的优势 2.1.1.1:异步处理化 2.1.1.2:削峰填谷 2.2:分布式消息队列 2.2.1:分布式消息队列的优势 2.2.1.1:数据的持久化 2.2.1.2:可扩展性 2.2.1.3:应用解耦 2.2.1.4:发送订阅  2.2.2:分布式消息队列的应用场景  三:Rabbitmq 3.1:基

    2024年02月08日
    浏览(63)
  • 分布式消息队列:Rabbitmq(2)

    目录 一:交换机 1:Direct交换机 1.1生产者端代码:  1.2:消费者端代码: 2:Topic主题交换机  2.1:生产者代码:  2.2:消费者代码:  二:核心特性 2.1:消息过期机制 2.1.1:给队列中的全部消息指定过期时间 2.1.2:给某条消息指定过期时间  2.2:死信队列 绑定: 让交换机和队列进行关联,可以指

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包