dong瓜

导航

高级消息中间件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.关闭连接

 

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

 

posted on 2023-03-11 14:18  dong瓜(TreeSky)  阅读(14)  评论(0编辑  收藏  举报