zoukankan      html  css  js  c++  java
  • JMS--Topic实战

    原文地址:http://blog.csdn.net/zhangxs_3/article/details/4034811

      与Queue不同的是,Topic实现的是发布/订阅模型,发布者发布的消息,可以被多个订阅者消费。现在我们建立两个订阅者,一个发布者,循环给这个topic发送消息。

    public class TestTopic {
      private static String brokerURL = "tcp://192.168.2.240:61616";

      private static ConnectionFactory connectionFactory;

      private static Connection connection;

      private static Session session;

      private static Destination topic;

      static{
        connectionFactory = new ActiveMQConnectionFactory(brokerURL);
        try {
          connection = connectionFactory.createConnection();
          connection.start();
          session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
          topic = session.createTopic("testtopic");
        } catch (JMSException e) {
          e.printStackTrace();
        }
      }


      public static void main(String[] args) throws Exception {
        MessageProducer producer = session.createProducer(topic);

        MessageConsumer consumer1 = session.createConsumer(topic);
        MessageConsumer consumer2 = session.createConsumer(topic);

        consumer1.setMessageListener(new MessageListener() {

          @Override
          public void onMessage(Message message) {
            try {
              String content = message.getStringProperty("content");
              System.out.println("consumer1:"+content);
            } catch (JMSException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }
          }
        });


        consumer2.setMessageListener(new MessageListener() {

          @Override
          public void onMessage(Message message) {
            try {
              String content = message.getStringProperty("content");
              System.out.println("consumer2:"+content);
            } catch (JMSException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }
          }
        });


        for(int i=0;i<10;i++){
          Message message = session.createMessage();
          message.setStringProperty("content", i+"");
          producer.send(message);
        }
      }
    }

    运行结果:

    consumer1:0
    consumer2:0
    consumer1:1
    consumer2:1
    consumer1:2
    consumer2:2
    consumer1:3
    consumer2:3
    consumer1:4
    consumer2:4
    consumer1:5
    consumer2:5
    consumer1:6
    consumer2:6
    consumer1:7
    consumer2:7
    consumer1:8
    consumer2:8
    consumer1:9
    consumer2:9

    从结果中我们看出,发布者发送的消息会被多个订阅者使用。这说明每个订阅者都会消费其订阅者发送的消息。

  • 相关阅读:
    hdu 3033 I love sneakers!
    poj 1742 Coins
    poj 1276 Cash Machine
    hdu 1114 Piggy-Bank
    poj 1293 Duty Free Shop
    hdu 1203 I NEED A OFFER!
    hdu 2546 饭卡
    树的直径
    CF 337D Book of Evil
    ST表
  • 原文地址:https://www.cnblogs.com/gaohuiqian/p/5215975.html
Copyright © 2011-2022 走看看