zoukankan      html  css  js  c++  java
  • 深入掌握JMS(五):实战Topic[转]

    与Queue不同的是,Topic实现的是发布/订阅模型,在下面的例子中,启动2个消费者共同监听一个Topic,然后循环给这个Topic中发送多个 消息。

    import javax.jms.Connection;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageConsumer;
    import javax.jms.MessageListener;
    import javax.jms.MessageProducer;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    import javax.jms.Topic;

    import org.apache.activemq.ActiveMQConnectionFactory;
    import org.apache.activemq.command.ActiveMQTopic;


    public class TopicTest {

    public static void main(String[] args) throws Exception {
    ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");

    Connection connection = factory.createConnection();
    connection.start();

    //创建一个Topic
    Topic topic= new ActiveMQTopic("testTopic");
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    //注册消费者1
    MessageConsumer comsumer1 = session.createConsumer(topic);
    comsumer1.setMessageListener(new MessageListener(){
    public void onMessage(Message m) {
    try {
    System.out.println("Consumer1 get " + ((TextMessage)m).getText());
    } catch (JMSException e) {
    e.printStackTrace();
    }
    }
    });

    //注册消费者2
    MessageConsumer comsumer2 = session.createConsumer(topic);
    comsumer2.setMessageListener(new MessageListener(){
    public void onMessage(Message m) {
    try {
    System.out.println("Consumer2 get " + ((TextMessage)m).getText());
    } catch (JMSException e) {
    e.printStackTrace();
    }
    }

    });

    //创建一个生产者,然后发送多个消息。
    MessageProducer producer = session.createProducer(topic);
    for(int i=0; i<10; i++){
    producer.send(session.createTextMessage("Message:" + i));
    }
    }

    }

    运行后得到下面的输出结果:

    Consumer1 get Message:0
    Consumer2 get Message:0
    Consumer1 get Message:1
    Consumer2 get Message:1
    Consumer1 get Message:2
    Consumer2 get Message:2
    Consumer1 get Message:3
    Consumer2 get Message:3
    Consumer1 get Message:4
    Consumer2 get Message:4
    Consumer1 get Message:5
    Consumer2 get Message:5
    Consumer1 get Message:6
    Consumer2 get Message:6
    Consumer1 get Message:7
    Consumer2 get Message:7
    Consumer1 get Message:8
    Consumer2 get Message:8
    Consumer1 get Message:9
    Consumer2 get Message:9

    说明每一个消息都会被所有的消费者消费。 
  • 相关阅读:
    HTML DOM 12 表格排序
    HTML DOM 10 常用场景
    HTML DOM 10 插入节点
    HTML DOM 09 替换节点
    HTML DOM 08 删除节点
    HTML DOM 07 创建节点
    022 注释
    024 数字类型
    005 基于面向对象设计一个简单的游戏
    021 花式赋值
  • 原文地址:https://www.cnblogs.com/jjj250/p/2524015.html
Copyright © 2011-2022 走看看