ActiveMq和RabbitMq区别及其解析

ActiveMq和RabbitMq区别及其解析1 ActiveMq 传统的消息队列 使用 Java 语言编写 基于 JMS JavaMessageS 采用多线程并发 资源消耗比较大 支持 P2P 和发布订阅两种模式 2 RabbitMQ 基于 AMQP 协议实现 支持多种场景 社区活跃量大 高性能 高可用 支持海量数据 两者区别在于 JMS 和 AMQP 此图取自别处 JMS 提供了两种消息模型 peer 2 peer 点对点 以及

两者区别在于JMS和AMQP(此图取自别处),

 JMS提供了两种消息模型,peer-2-peer(点对点)以及publish-subscribe(发布订阅)模型。当采用点对点模型时,消息将发送到一个队列,该队列的消息只能被一个消费者消费。而采用发布订阅模型时,消息可以被多个消费者消费。在发布订阅模型中,生产者和消费者完全独立,不需要感知对方的存在。

下图为Amq的消费情况 ,Amq本地搭建及其简单,Rmq还没有试过。

ActiveMq和RabbitMq区别及其解析

P2P消费

ActiveMq和RabbitMq区别及其解析

发送和消费代码相似,就是把createconsumer改为createProducer.

ActiveMq和RabbitMq区别及其解析

发布模式

 publisher = (ActiveMQTopicPublisher) session.createPublisher(topic); publisher.setDeliveryMode(DeliveryMode.PERSISTENT) 订阅模式 subscriber = (ActiveMQTopicSubscriber) session.createDurableSubscriber(topic, "*"); subscriber.setMessageListener(this);

下图为RMQ的消费情况

ActiveMq和RabbitMq区别及其解析

     RMQ和AMQ最大区别在于有 vhost 和exchange,routingkey这些区别。只有exchange 和routingkey相匹配,才会进行收发消息,不仅仅是队列名的匹配,

ActiveMq和RabbitMq区别及其解析

ActiveMq和RabbitMq区别及其解析

ActiveMq和RabbitMq区别及其解析

在rabbitmq中,exchange有4个类型:direct,topic,fanout,header。

Direct:将消息中的Routing key与该Exchange关联的所有Binding中的Routing key进行比较,如果相等,则发送到该Binding对应的Queue中。

Topic:将消息中的Routing key与该Exchange关联的所有Binding中的Routing key进行对比,如果匹配上了,则发送到该Binding对应的Queue中,*(星号):可以(只能)匹配一个单词#(井号):可以匹配多个单词(或者零个)

Fanout :直接将消息转发到所有binding的对应queue中,这种exchange在路由转发的时候,忽略Routing key

Headers :将消息中的headers与该Exchange相关联的所有Binging中的参数进行匹配,如果匹配上了,则发送到该Binding对应的Queue中。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203213.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午10:20
下一篇 2026年3月19日 下午10:21


相关推荐

  • 真实机下 ubuntu 18.04 安装GPU +CUDA+cuDNN 以及其版本选择(亲测非常实用)

    真实机下 ubuntu 18.04 安装GPU +CUDA+cuDNN 以及其版本选择(亲测非常实用)ubuntu18.04安装GPU+CUDA+cuDNN:目前,大多情况下,能搜到的基本上都ubuntu14.04.或者是ubuntu16.04的操作系统安装以及GPU环境搭建过程,博主就目前自身实验室环境进行分析,总结一下安装过程。1.实验室硬件配置(就需要而言):gpu:GeForcetitanxp12G显存内存:6…

    2022年5月4日
    55
  • C++多线程编程:同步之互斥量Mutex「建议收藏」

    C++多线程编程:同步之互斥量Mutex「建议收藏」文章目录5.示例代码文章目录1.CreateMutex()2.ReleaseMutex()3.WaitForSingleobject()4.CloseHandle()5.示例代码6.Mutex实现一个程序只允许允许一个实例(进程)5.示例代码文章目录1.CreateMutex()2.ReleaseMutex()3.WaitForSingleobject()4.CloseHandle()5.示例代码6.Mutex实现一个程序只允许允许一个实例(进程))5.示例代码文章目录1

    2022年6月26日
    38
  • Android studio的gradle教程整理「建议收藏」

    Android studio的gradle教程整理「建议收藏」【Gradle教程】第一章:引言http://ask.android-studio.org/?/article/7【Gradle教程】第二章:概述http://ask.android-studio.org/?/article/6【Gradle教程】第三章:教程http://ask.android-studio.org/?/article/15【Gradle教程】第四章:安装…

    2022年6月28日
    28
  • visio2013专业版激活密匙[通俗易懂]

    visio2013专业版激活密匙[通俗易懂]Visio2013最新产品密钥分享,在安装时可以使用以下密钥:  2NYF6-QG2CY-9F8XC-GWMBW-29VV8  FJ2N7-W8TXC-JB8KB-DCQ7Q-7T7V3  VXX6C-DN3HQ-3CRXG…

    2022年6月24日
    91
  • 掌握Kali Linux,揭秘SQL注入实战技巧与风险防范

    掌握Kali Linux,揭秘SQL注入实战技巧与风险防范

    2026年3月13日
    2
  • 免费申请国外免费域名超详细教程

    免费申请国外免费域名超详细教程1.首先申请免费域名网站:https://my.freenom.com/domains.php2.填入域名,这里我们以xcflag为列(尽量选择复杂一点的或者五个字母以上的域名,因为简单的有些域名是需要收费的),点击检查可用性。3.可以看到很多免费的域名(用的谷歌翻译插件,翻译有时候不是很准确,free翻译过来应该是免费而不是自由,之后会写一些关于谷歌插件的笔记,详细讲解)4.我们选择xcflag.tk点击立即获取,稍等一会点击购物车查看绿色按钮5.默认三个月试用,这里下拉框我们选择十二个月

    2022年6月30日
    101

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号