美文网首页
浅谈消息队列

浅谈消息队列

作者: hellozepp | 来源:发表于2019-10-07 20:38 被阅读0次

    MQ是什么

    • 屏蔽底层复杂的通讯协议,定义了一套应用层的、更加简单的通讯协议
    • MQ通过将消息的发送和接收分离来实现应用程序的异步和解偶

    市面上的MQ对比

    有Broker 重Topic流:kafka,JMS,pulsar
    有Broker 轻Topic流: RocketMQ
    无Broker: ZeroMQ

    更合适的场景

    kafka,zeromq,rabbitmq代表了三种完全不同风格的MQ架构;关注点完全不同:

    • kafka在乎的是性能,速度
    • rabbitmq追求的是灵活
    • zeromq追求的是轻量级、分布式,无broker以二方包方式使用,ZeroMQ其实就是一个跨语言的、重量级的Actor模型邮箱库。

    AMQP 是啥

    生产者发送key和数据,消费者定义订阅的队列,Broker收到数据之后会通过一定的逻辑计算出key对应的队列,然后把数据交给队列。
    这种模式下解耦了key和queue,在这种架构中queue是非常轻量级的(在RabbitMQ中它的上限取决于你的内存),消费者关心的只是自己的queue;生产者不必关心数据最终给谁只要指定key就行了,中间的那层映射在AMQP中叫exchange(交换机)。AMQP中有四种种exchange——Direct exchange:key就等于queue;Fanout exchange:无视key,给所有的queue都来一份;Topic exchange:key可以用“宽字符”模糊匹配queue;最后一个厉害了Headers exchange:无视key,通过查看消息的头部元数据来决定发给那个queue(AMQP头部元数据非常丰富而且可以自定义)。这种结构的架构给通讯带来了很大的灵活性,我们能想到的通讯方式都可以用这四种exchange表达出来。如果你需要一个企业数据总线(在乎灵活性)那么RabbitMQ绝对的值得一用。

    相关文章

      网友评论

          本文标题:浅谈消息队列

          本文链接:https://www.haomeiwen.com/subject/rbbepctx.html