`
hhhhh-kk#qq.com
  • 浏览: 57540 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JMS topic

阅读更多
   
深入掌握JMS(五):实战Topic
2009年03月31日 星期二 09:43
与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

说明每一个消息都会被所有的消费者消费
分享到:
评论

相关推荐

    JMS中topic和queue两种实现方式

    JMS中topic和queue两种实现方式

    weblogic中使用JMS发送和接受消息

    weblogic中使用JMS发送和接受消息(Queue and TOPIC)

    EJB TO JMS

    JMS Topic(1) 1.消息的生产者 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import javax.jms.JMSException; import javax.jms.ObjectMessage; import javax.jms...

    一个jms activemq Topic 消息实例

    一个jms activemq Topic 消息实例 关于jms JMS 是接口,相当于jdbc ,要真正使用它需要某些厂商进行实现 ,即jms provider 常见的jms provider 有 ActiveMQ JBoss 社区所研发的 HornetQ (在jboss6 中默认即可以...

    ESB应用JMS_Topic

    ESB应用JMS_Topic,有图片, JBoss_ESB

    javax.jms.jar

    javax.jms.Topic.class javax.jms.MapMessage.class javax.jms.ObjectMessage.class javax.jms.StreamMessage.class javax.jms.TextMessage.class javax.jms.MessageListener.class javax.jms.MessageProducer.class...

    压力测试软件 jmeter 操作大全 (中文)

    1 介绍 ...12 建立与实现 JMS Topic 测试(MQ测试) 13 建立与实现 Monitor 测试 14 有关listeners 15 Remote Testing远程测试 16 Best Practices 呵呵,感觉真不错,有详细介绍与如何实现的一步一步的操作

    JBoss ESB 学习笔记

    10——第九个ESB代码JMS Topic 91 11——第十个ESB代码Message Filters 99 12——第十一个ESB代码Spring Hello World 106 13——第十二个ESB代码Spring AOP 113 14——第十三个ESB代码Transform CSV to XML 122 15...

    activeMQ JMS 3种创建方式

    activeMQ JMS 3种创建方式 公共方式 QUEUE TOPIC

    Queue与Topic的比较

    Queue与Topic的比较,学习JMS和activemq必须看的资料之一

    一个Topic和subscriber的JMS应用

    NULL 博文链接:https://jasonxiawanjian.iteye.com/blog/1884568

    jms官方接口

    官方jar,用于JMS queue和topic开发

    spring-jms入门

    spring-jms入门

    WebLogic jms三个实例

    三个jms的实例,实现了jms的queue和topic,同时也实现了远程传送消息和本地传送消息,另外也分别实现了session的事务和非事务模式,有了这三个例子应该可以满足你的任何关于jms的需求了,由于上传限制,另外还需要...

    java weblogic jms temple

    自己写好的一个简单的weblogic jms的简单实现,包括点对点的实现,以及topic的实现,适合初学者参考

    JMS规范v1.1官方手册.pdf

    JMS规范v1.1的官方原版,大家学习ActiveMQ的时候可以进行参考。详细介绍了包括连接、session、生产者、消费者、topic、queue等概念。深入学习的必备手册。

    JMS实现的信息的广播订阅

    JMS实现的 广播 和 信息发送 ,希望对你有用

    SpringBoot2整合Jms超级简单攻略(基于ActiveMQ)

    消息主题(Topic),需要一个固定的主题,例如大家都是在谈论外卖,那主题就是外卖,别人讨论其他的跟你无关。 消息队列(MQ) ,存放或者实现JMS的功能,需要用到队列,有人放入消息到外卖队列,有人从外卖队列读取消息...

    在spring boot中使用jms集成IBM-MQ和TLQ,包含普通队列和主题订阅两种模式,并实现按需加载

    1) 本工程主要演示在SPRING BOOT工程中怎样使用JMS集成IBM-MQ及TLQ两种消息中间件产品 2) 使用SPRING BOOT Conditional机制实现了两种产品按需加载,工程会根据配置文件开关动态加载 3) 实现了普通队列消息发送与...

    JMS的一个非常好的demo

    自己写的一个JMS的demo,包含点对点,发布/订阅的例子,以及DeliverMode的测试,还有持久的订阅者,解决topic模式下消息接收者离线后接收不到离线时错过的消息的问题。

Global site tag (gtag.js) - Google Analytics