• RabbitMQ


    MQ产品常用的三种协议:

    1:JMS rocketMQ,activeMQ

    2.AMQP RabbitMq

    3.MQTT activeMQ

    RabbitMQ是AMQP的一种实现。

     

     

    AMQP是什么?

    基本概念

    broker:消息代理

    producer: 消息的生产者

    consumer: 消息的消费者

    exchange: 交换机

    route: 路由规则

    Queue: 消息队列

     

    1.消息的生产者生产消息(指定消息的元数据)

    2.交换机根据路由规则放入到指定的队列 成为绑定

    3.消息代理把消息投递给订阅了此队列的消费者(消费者也可按照需求自行获取)。

     

    交换机

    默认: direct类型的Exchange路由规则也很简单,它会把消息路由到那些Binding key与Routing key完全匹配的Queue中。类似集群模式 一对一,正常情况下的 队列名字严格匹配,交换机设置队列名字和路由规则

    fanout : fanout类型的Exchange路由规则非常简单,它会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中。 类似广播模式 不一样,我擦,什么玩意。竟然是绑定这个交换机的queue,然而每一个queue还是只能消费一次。。这是什么逻辑。再见了 rabbimq

    Topic : 对key进行模式匹配

    如果RabbitMQ没有收到回执并检测到消费者的RabbitMQ连接断开,则RabbitMQ会将该消息发送给其他消费者(如果存在多个消费者)进行处理。这里不存在timeout,一个消费者处理消息时间再长也不会导致该消息被发送给其他消费者,除非它的RabbitMQ连接断开。

    这里会产生另外一个问题,如果我们的开发人员在处理完业务逻辑后,忘记发送回执给RabbitMQ,这将会导致严重的bug——Queue中堆积的消息会越来越多。消费者重启后会重复消费这些消息并重复执行业务逻辑。

    另外publish message 是没有ACK的。

     

    1. connection error; protocol method: #method<connection.close>(reply-code=530, reply-text=NOT_ALLOWED - access to vhost '/' refused for user 'springcloud', class-id=10, method-id=40)

    说明:账户springcloud没有对 “/” 的权限,在 mq 管理页面上添加权限即可

  • 相关阅读:
    vue获取当前v-for里当前点击元素
    js利用正则替换图片路径问题
    undefined null 各种值比较(面试题)
    SSE两个页面的相互通信
    微信小程序导航栏,下面内容滑动,上册导航栏跟着滑动,内容随着导航栏滑动
    微信小程序缓存滑动距离,当页面浏览到一定位置,滑动其他页面后返回该页面记录之前的滑动距离
    ajax拖拽上传文件
    Java 面向对象(四)
    关于Scanner调用 sc.nextInt() 异常try后不能二次输入导致死循环问题
    Java 面向对象(三)
  • 原文地址:https://www.cnblogs.com/munan56/p/12203224.html
Copyright © 2020-2023  润新知