首页 > 其他分享 >高级消息中间件rabbitmq

高级消息中间件rabbitmq

时间:2023-03-11 14:23:15浏览次数:65  
标签:队列 绑定 高级 rabbitmq 交换机 消息 消息中间件 路由

rabbitmq

    是一个在AMQP协议上实现的企业级消息系统。何谓消息系统,就是消息队列系统,消息队列是“”消费-生产者模型“”的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。
    Vritual host:虚拟地址,最上层的消息路由,一个virtual Host 里面可以有若干个Exchange和Queue, 同一个virtual Host里面不能有相同名称的EXchange或Queue
    Exchange: 交换机,接收消息,根据路由键装发消息到绑定的队列
    Binding: Exchange和Queue之间的虚拟连接,binding中可以包含routing key
    Routing key: 一个路由规则,虚拟机可用它来确定如何路由一个特定消息
    Queue: 也称为Message Queue 消息队列,保存消息并将它们转发给消费者

    交换机的类型有
        1、direct模式(直连)
            (direct exchange)是根据消息携带的路由键(routing key)将消息投递给对应队列的。直连交换机用来处理消息的单播路由(unicast routing)(尽管它也可以处理多播路由)。
            如果多个队列被绑定到具有相同路由K的直接交换机,则交换机将消息推送到这些队列上------多播路由
        2、fanout模式(扇形)
            扇型交换机(funout exchange)将消息路由给绑定到它身上的所有队列,而不理会绑定的路由键。如果N个队列绑定到某个扇型交换机上,当有消息发送给此扇型交换机时,交换机会将消息的拷贝分别发送给这所有的N个队列。扇型用来交换机处理消息的广播路由
        3、主题模式(发布/订阅)
            主题交换机(topic exchanges)通过对消息的路由键和队列到交换机的绑定模式之间的匹配,将消息路由给一个或多个队列。主题交换机经常用来实现各种分发/订阅模式及其变种。主题交换机通常用来实现消息的多播路由
        4、头部模式
            有时消息的路由操作会涉及到多个属性,此时使用消息头就比用路由键更容易表达,头交换机(headers exchange)就是为此而生的。头交换机使用多个消息属性来代替路由键建立路由规则。通过判断消息头的值能否与指定的绑定相匹配来确立路由规则。

        注意:设置的交换机类型后,不能再修改

    生产者端可开启事务:
         AMQP事务保证RabbitMQ不仅收到了消息,并成功将消息路由到了所有匹配的订阅队列,AMQP事务将使得生产者和RabbitMQ产生同步。虽然事务使得生产者可以确定消息已经到达RabbitMQ中的对应队列,但是却会降低2~10倍的消息吞吐量。

     消费者端:
         rabbitmq采用轮询的方式发送数据给消费者,回复ack会提醒rabbitmq消息已在消费者中收到
        生产者端基本流程:
            1.创建连接
            2.在连接内创建一个通道
            3.创建交换机
            4.设置交换机类型
            5.设置交换机持久
            6.声明交换机并输出状态
            7.创建队列
            8.声明消息队列并输出状态
            9、发送消息到rabbitmq服务器
            12.关闭连接

        消费者端基本流程:
            1.创建连接
            2.在连接内创建一个通道
            3.创建交换机
            4.设置交换机类型
            5.设置交换机持久
            6.声明交换机并输出状态
            7.创建队列
            8.声明消息队列并输出状态
            9.绑定交换机与队列,并指定路由键
            10.设置消息队列消费者回调方法,并进行阻塞
            11.接收消息并进行处理的回调方法
            12.关闭连接

 

交换机不同方式的测试结果

 

标签:队列,绑定,高级,rabbitmq,交换机,消息,消息中间件,路由
From: https://www.cnblogs.com/TreeSky/p/17205965.html

相关文章

  • RabbitMQ图解
    之前学习过RabbitMQ,不过忘了,最近来复习下,发现效果不怎么好,于是画了一图来理解RabbitMQ,本文也不想贴代码。废话不多说,直接上图,如果有错误希望老铁指正!1、simple模式和wo......
  • Docker安装RabbitMQ
    Docker安装RabbitMQ1、准备工作准备挂载目录创建/opt/rabbitmq目录,集中管理RabbitMQ信息。特别注意目录权限问题。因为容器内RabbitMQ是以rabbitmq用户启动的,有些......
  • rabbitmq五种消息模型
    首先什么是MQMQ全称是MessageQueue,即消息对列!消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产......
  • python实现RabbitMQ六种模式
    为什么管MQ叫做分布式消息中间件?分布式表示应用场景(用户基数大采用分布式提供服务的方式)。消息表示通信形式。中间件表示媒介。生产者和消费者都只是个python程序......
  • RabbitMQ发布订阅模式
    发布订阅和简单的消息队列区别在于,发布订阅会将消息发送给所有的订阅者,而消息队列中的数据被消费一次便消失。所以,RabbitMQ实现发布和订阅时,会为每一个订阅者创建一个队列,......
  • 04 文件的高级操作:控制文件指针的移动
    """@作者:egon老湿@微信:18611453110@专栏:https://zhuanlan.zhihu.com/c_1189883314197168128"""#指针移动的单位都是以bytes/字节为单位#只有一种情况特殊:#t......
  • 解锁ChatGPT超高级玩法,展示动态图片,纯干货分享!
    文/ 韩彬 这段时间在玩ChatGPT,总是文字,我有点玩腻了,突然想让ChatGPT返回一张图片,可是它却答复: 很抱歉,作为一个语言模型,我无法展示图片。但你可以在搜索引擎中搜索......
  • eNSP的使用4   交换机  高级ACL
    列表号3000~3999限制某客户机访问特定服务器的网站:1.进入系统视图:system-view2.创建 acl :acl 3000源ip 目标ip 协议 端口3.rule deny tcp source 192.168.2.2 0......
  • RabbitMQ真实生产故障问题还原与分析
    由某一次真实生产环境rabbitMQ故障引发血案,下面复盘问题发生原因以及问题解决方法。1、    问题引发由某个服务BI-collector-xx队列出现阻塞,影响很整个rabbitMQ......
  • RabbitMQ 问题收集
    RabbitMQ问题收集RabbitMQ可靠性发送方确认模式将信道设置成confirm模式(发送方确认模式),则所有在信道上发布的消息都会被指派一个唯一的ID。一旦消息被投递到目的......