队列(Queue)和主题(Topic)是JMS支持的两种消息传递模型:
        1、点对点(point-to-point,简称PTP)Queue消息传递模型:
        通过该消息传递模型,一个应用程序(即消息生产者)可以向另外一个应用程序(即消息消费者)发送消息。在此传递模型中,消息目的地类型是队列(即Destination接口实现类实例由Session接口实现类实例通过调用其createQueue方法并传入队列名称而创建)。消息首先被传送至消息服务器端特定的队列中,然后从此对列中将消息传送至对此队列进行监听的某个消费者。同一个队列可以关联多个消息生产者和消息消费者,但一条消息仅能传递给一个消息消费者。如果多个消息消费者正在监听队列上的消息,,JMS消息服务器将根据“先来者优先”的原则确定由哪个消息消费者接收下一条消息。如果没有消息消费者在监听队列,消息将保留在队列中,直至消息消费者连接到队列为止。这种消息传递模型是传统意义上的懒模型或轮询模型。在此模型中,消息不是自动推动给消息消费者的,而是要由消息消费者从队列中请求获得。 
        2、发布/订阅(publish/subscribe,简称pub/sub)Topic消息传递模型:

通过该消息传递模型,应用程序能够将一条消息发送给多个消息消费者。在此传送模型中,消息目的地类型是主题(即Destination接口实现类实例由Session接口实现类实例通过调用其createTopic方法并传入主题名称而创建)。消息首先由消息生产者发布至消息服务器中特定的主题中,然后由消息服务器将消息传送至所有已订阅此主题的消费者。主题目标也支持长期订阅。长期订阅表示消费者已注册了主题目标,但在消息到达目标时该消费者可以处于非活动状态。当消费者再次处于活动状态时,将会接收该消息。如果消费者均没有注册某个主题目标,该主题只保留注册了长期订阅的非活动消费者的消息。与PTP消息传递模型不同,pub/sub消息传递模型允许多个主题订阅者接收同一条消息。JMS一直保留消息,直至所有主题订阅者都接收到消息为止。pub/sub消息传递模型基本上是一个推模型。在该模型中,消息会自动广播,消息消费者无须通过主动请求或轮询主题的方法来获得新的消息。

具体区别对比如下:

类型

Topic

Queue

概要

Publish Subscribe messaging 发布订阅消息

Point-to-Point 点对点

有无状态

topic数据默认不落地,是无状态的。

Queue数据默认会在mq服务器上以文件形式保存,比如Active MQ一般保存在$AMQ_HOME\data\kr-store\data下面。也可以配置成DB存储。

完整性保障

并不保证publisher发布的每条数据,Subscriber都能接受到。

Queue保证每条数据都能被receiver接收。

消息是否会丢失

一般来说publisher发布消息到某一个topic时,只有正在监听该topic地址的sub能够接收到消息;如果没有sub在监听,该topic就丢失了。

Sender发送消息到目标Queue,receiver可以异步接收这个Queue上的消息。Queue上的消息如果暂时没有receiver来取,也不会丢失。

消息发布接收策略

一对多的消息发布接收策略,监听同一个topic地址的多个sub都能收到publisher发送的消息。Sub接收完通知mq服务器

一对一的消息发布接收策略,一个sender发送的消息,只能有一个receiver接收。receiver接收完后,通知mq服务器已接收,mq服务器对queue里的消息采取删除或其他操作。

关于ActiveMQ的安装及使用详见我的另一篇文章:ActiveMQ安装配置及使用

Queue与Topic区别相关推荐

  1. ActiveMQ—Queue与Topic区别

    Queue与Topic区别 转自:http://blog.csdn.net/qq_21033663/article/details/52458305 队列(Queue)和主题(Topic)是JMS支持 ...

  2. JMS中queue和topic区别

    JMS中queue和topic区别 2008-07-08 13:16 What is the difference between queue and topic? A connection is c ...

  3. ActiveMQ的queue以及topic两种消息处理机制分析

    转自: http://itindex.net/detail/50057-activemq-queue-topic 上一期介绍了我们项目要用到activeMQ来作为jms总线,并且给大家介绍了activ ...

  4. queue.Queue和multiprocessing.Queue队列的区别

    queue.Queue和multiprocessing.Queue队列的区别 文章目录 queue.Queue和multiprocessing.Queue队列的区别 前言 一.明显的区别 二.queu ...

  5. RocketMQ中的Topic和JMS的queue有什么区别?

    queue就是来源于数据结构的FIFO队列.而Topic是个抽象的概念,每个Topic底层对应N个queue,而数据也真实存在queue上的.

  6. queue与topic的区别

    JMS中定义了两种消息模型:点对点(point to point, queue)和发布/订阅(publish/subscribe,topic).主要区别就是是否能重复消费. 点对点:Queue,不可重 ...

  7. Yarn管理界面中Queue:root和Queue:default的区别

    截图如下: 那么这两个队列什么区别呢? [1] The root queue is the parent of all queues. All other queues are each a chil ...

  8. java queue 实现类 区别_Java集合11 (Queue)

    java.util.Queue接口是java.util.Collection子接口. 它代表一个有序的对象列表,就像List一样,但是它的使用有略微的区别. Queue被设计成从末端插入并且从头部删除 ...

  9. 线程Queue,进程Queue和RabbitMQ区别

    进程Queue用于父进程与子进程(或同一父进程中多个子进程)间数据传递 python自己的多个进程间交换数据或者与其他语言(如Java)进程queue就无能为力 RabbitMQ就是这样一个可以在不同 ...

  10. spring+ (activeMQ) 实现queue与topic

    2019独角兽企业重金招聘Python工程师标准>>> 2017-06-17 1.activeMQ下载与安装 前往Apache官网下载ActiveMQ,下载地址http://acti ...

最新文章

  1. Java并发编程(十一)——原子操作CAS
  2. java学习规划-转的
  3. python3项目-python3项目
  4. python流程控制语句-python语言的流程控制
  5. Python中的__init__和self是做什么的?
  6. 在centos服务器上安装配置私人邮箱,并在web端管理邮件
  7. C# Lamda中类似于SQL 中的 In 功能
  8. 关于Unity中DOTween插件的使用(专题一)
  9. WebAPI HelpPage出现Failed to generate the sample for media type 'application/x-www-form-urlencoded'. 错
  10. 东南大学计算机考研代码,东南大学代码_东南大学专业代码_2021东南大学招生代码,报考代码...
  11. 心理账户--《别做正常的傻瓜》摘记1
  12. pandas GUI 神器 D-Tale,可视化操作自动转代码
  13. KEIL MDK5 更好用 更简洁 的ARM开发环境
  14. 区块链-高级密钥和地址
  15. 微信小程序 wx.miniProgram.navigateTo和wx.miniProgram.navigateBack无效问题解决
  16. java 拼音首字母_java获取中文拼音首字母的实例
  17. 微信小程序——View背景设置
  18. 其实吧!关于IT培训,有些话请不要轻易相信,相信你就输了!
  19. 机器学习的基础算法--牛顿法
  20. 人生本过客,何必千千结

热门文章

  1. 计算机应用后期影音制作,影音制作工具(ImTOO Movie Maker)
  2. 百度云盘上传文件 提示服务器错误,百度网盘上传文件失败怎么办?百度网盘无法上传文件的解决办法...
  3. win7电脑提升开机速度方法
  4. 数据结构(排序)2021-06-13
  5. mysql column specified twice_Column 'box_id' specified twice 错误
  6. 报错No protocol specified解决办法
  7. Either类java_基于Java8的Either类
  8. 验证18位身份证真实性
  9. 有些打不开的国外网页
  10. 加密技术——对称与非对称加密技术简述