QueueTopic的比较

1、JMS Queue执行load balancer语义:

一条消息仅能被一个consumer收到。

如果在message发送的时候没有可用的consumer,那么它将被保存一直到能处理该message的consumer可用。

如果一个consumer收到一条message后却不响应它,那么这条消息将被转到另一个consumer那儿。

一个Queue可以有很多consumer,并且在多个可用的consumer中负载均衡。


如何理解:如果一个consumer收到一条message后却不响应它,那么这条消息将被转到另一个consumer那儿。

见附件中的程序:

在Receiver.java中, 创建了消费者并实现了同步接收:


  1. while (true) {
  2. // 设置接收者接收消息的时间,为了便于测试,这里谁定为100s
  3. TextMessage message = (TextMessage) consumer.receive(18000);
  4. // Object message = (Object) consumer.receive(28000);
  5. if (null != message) {
  6. System.out.println("订阅者1:收到消息-->" + message.getText());
  7. } else {
  8. System.out.println("订阅者1:运行结束...\n");
  9. break;
  10. }
  11. }

在Receiver2.java中,创建了消费者但是注释掉了接收部分的程序:


  1. //while (true) {
  2. // // 设置接收者接收消息的时间,为了便于测试,这里谁定为100s
  3. // TextMessage message = (TextMessage) consumer.receive(18000);
  4. // if (null != message) {
  5. // System.out.println("订阅者2:收到消息-->" + message.getText());
  6. // } else {
  7. // System.out.println("订阅者2:消费者运行结束...\n");
  8. // break;
  9. // }
  10. // }

先分别将Receiver和Receiver2运行起来,然后再运行Sender,将得到如下运行结果:


特别注意:订阅者2在订阅者1之后停止运行,如何在订阅者1前停止运行,结果还不一样。

此时再次开启receive1,将看到:


如果订阅者2在订阅者1之前停止运行,将会出现如下运行结果:



2、Topic实现publish和subscribe语义:

一条消息被publish时,它将发到所有感兴趣的订阅者,所以零到多个subscriber将接收到消息的一个拷贝。但是在消息代理接收到消息时,只有激活订阅的subscriber能够获得消息的一个拷贝。


3、分别对应两种消息模式:

Point-to-Point (点对点),Publisher/Subscriber Model (发布/订阅者)

其中在Publicher/Subscriber 模式下又有Nondurable subscription(非持久订阅)和durable subscription (持久化订阅)2种消息处理方式。




附件列表

【ActiveMQ入门-5】ActiveMQ学习-Queue与Topic的比较的更多相关文章

  1. ActiveMQ——activemq的详细说明,queue、topic的区别(精选)

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

  2. ActiveMQ入门之四--ActiveMQ持久化方式

    消息持久性对于可靠消息传递来说应该是一种比较好的方法,有了消息持久化,即使发送者和接受者不是同时在线或者消息中心在发送者发送消息后宕机了,在消息中心重新启动后仍然可以将消息发送出去,如果把这种持久化和 ...

  3. ActiveMQ 入门和与 Spring 整合

    ActiveMQ 入门演示 activemq 依赖 <dependency> <groupId>org.apache.activemq</groupId> < ...

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

    1    queue与topic的技术特点对比 对比项 Topic Queue 概要 Publish Subscribe messaging 发布订阅消息 Point-to-Point 点对点 有无状 ...

  5. SpringBoot整合ActiveMq实现Queue和Topic两种模式(看不懂你来打我)

    目录 一.前言 二.ActiveMq的下载和使用 三.依赖准备 四.yml文件配置 五.配置Bean 六.创建生产者(Queue+Topic) 七.创建消费者(Topic模式下) 八.测试结果(Top ...

  6. 【ActiveMQ入门-11】ActiveMQ学习-compositeDestination

    概要: 前一章讲解了消费者如何通过通配符来匹配目的地,以实现一个消费者同时接收多个目的地的消息. 对于生产者来讲,可能存在下面的需求: 1. 同一条message可能要发送到多个Queue: 2. 同 ...

  7. activemq安装运行及其在springboot中的queue和topic使用

    安装activemq 运行 springboot使用 依赖 配置 Producer Consumer ComsumerTopic 使用 安装activemq http://activemq.apach ...

  8. ActiveMQ学习总结(2)——ActiveMQ入门实例教程

    1.下载ActiveMQ 去官方网站下载:http://activemq.apache.org/ 2.运行ActiveMQ 解压缩apache-activemq-5.5.1-bin.zip,然后双击a ...

  9. ActiveMQ queue和topic,持久订阅和非持久订阅

    消息的 destination 分为 queue 和 topic,而消费者称为 subscriber(订阅者).queue 中的消息只会发送给一个订阅者,而 topic 的消息,会发送给每一个订阅者. ...

随机推荐

  1. POJ 2566 Bound Found 尺取 难度:1

    Bound Found Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 1651   Accepted: 544   Spec ...

  2. Spring学习笔记之各个包的作用

    (1) spring-core.jar 这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工 ...

  3. Spring学习笔记之The IoC container

    IoC is also known as dependency injection (DI). 这是一个过程?什么样的过程呢?对象自己定义它的依赖关系,这意味着,那些他们依赖的对象,只能通过构造函数参 ...

  4. ansible role[初稿]

    ansible roles role_name/ files/:存储由copy或script等模块调用的文件: tasks/:此目录中至少应该有一个名为main.yml的文件,用于定义各task:其它 ...

  5. ORACLE telnet 1521 不通及ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务的解决

    服务器上安装了oracle11g , 防火墙上已经增加1521 入站规则.但是内网客户端配置好了TNS无法连接.telnet 1521 不通. 需要在服务器上\product\10.2.0\db_1\ ...

  6. 福大软工1816 · 第八次作业(课堂实战)- 项目UML设计(团队)

    团队 学号 姓名 本次作业博客链接 031602428 苏路明(组长) https://www.cnblogs.com/Sulumer/p/9822854.html 031602401 陈瀚霖 htt ...

  7. WebGL编程指南案例解析之纹理叠加

    var vShader = ` attribute vec4 a_Position; attribute vec2 a_TexCoord; varying vec2 v_TexCoord; void ...

  8. 正则表达式,清除HTML标签,但要保留 <br>和<img>标签,其他的清除

    最近有个需求, 要替换到html当中的除了br和img以外的所有标签, 遂百度之, 在百度知道遇到大神 , 在这记录一下 /<(?!\/?br\/?.+?>|\/?img.+?>)[ ...

  9. Gym - 101550A Artwork (并查集在线做法)

    题目链接 题意:给你一个n*m的网格图,初始时格点全白,每次可以将一段连续的格点涂黑.求出每次操作之后白色连通块的数量. 看了看网上的题解,基本全是离线的做法.其实这道题是有在线的做法的,利用了对偶图 ...

  10. PHP处理大数据导出Excel方法

    在日常的工作中,很多时候都需要导出各种各样的报表,但是如果导出的数据一旦比较大,很容易就导致超时,对于这种问题,有很多的解决方法,例如网上说的分批导出.采用CSV.还有就采用JAVA.甚至是C++和C ...