zoukankan      html  css  js  c++  java
  • 【ActiveMQ入门-5】ActiveMQ学习-Queue与Topic的比较

    QueueTopic的比较

    1JMS Queue执行load balancer语义:

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

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

    如果一个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:运行结束... ");
    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:消费者运行结束... ");
    8. // break;
    9. // }
    10. // }

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


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

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


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




    2Topic实现publishsubscribe语义:

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


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

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

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


     







    附件列表

    • 相关阅读:
      关于这个 blog
      P6499 [COCI2016-2017#2] Burza 题解
      CF1172F Nauuo and Bug 题解
      CF1479D Odd Mineral Resource 题解
      CF1442E Black, White and Grey Tree 题解
      CF1442D Sum 题解
      CF1025D Recovering BST 题解
      CF1056E Check Transcription 题解
      CF1025F Disjoint Triangles 题解
      红包算法的PHP实现
    • 原文地址:https://www.cnblogs.com/ssslinppp/p/4463992.html
    Copyright © 2011-2022 走看看