`

深入掌握JMS(五):实战Topic

    博客分类:
  • JMS
jms 
阅读更多
本文转自:http://blog.csdn.net/iamfafa/article/details/6264698

与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.doc

    深入掌握JMS,详细讲解JMS原理及JMS开发

    深入掌握JMS深入掌握JMS

    在了解了JMS的基础上深入的了解它,有实例代码,可以加深你对它的理解。

    深入掌握JMS——ActiveMQ 十一章

    深入掌握JMS——ActiveMQ 十一章pdf,收集整理

    javax.jms-1.1.jar

    javax.jms-1.1.jar 一个jar包

    深入掌握JMS-ActiveMQ

    JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业应用的开发。本资源为chm格式,深入介绍了ActiveMQ的应用。

    JMS中topic和queue两种实现方式

    JMS中topic和queue两种实现方式

    深入掌握 JMS(java message service)

    一篇深入的讲解了java message service技术的文档 ,希望对大家有所帮助

    ESB应用JMS_Topic

    ESB应用JMS_Topic,有图片, JBoss_ESB

    一个jms activemq Topic 消息实例

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

    jms-1.1.jar

    jms-1.1.jar 解决maven 无法自动下载问题,手动放入仓库

    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...

    由浅入深学习、掌握JMS

    由浅入深学习、掌握JMS的几个教材,实用性强

    JMS(JMS(JMS(JMS(

    JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS

    JMS 实战 示例

    JMS 在系统中的应用,可以修改后应用于系统中。

    jms深入详解(说明介绍及源码)

    深入探索jms,包含JMS深入探究十篇.doc、amq Maven工程、apache-activemq-5.8.0 JMS Provider。从浅到深讲解了JMS接口的用法,并以activemq为实例进行实现。

    深入掌握J2EE编程技术

    《深入掌握J2EE编程技术》全面介绍了JSP层,EJB层和EIS层的设计思想与编程技术,涉及的内容包括:JDBC,JNDI,LDAP,Servlet,JSP,Taglib,EJB,J2EE,Connector,SAX与DOM,RMI,CORBA,JavaMail和JMS。...

    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...

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

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

Global site tag (gtag.js) - Google Analytics