`
hhhhh-kk#qq.com
  • 浏览: 58307 次
  • 性别: 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),这两种模式在实现方式和功能上有所不同。 1. 主题(Topic): - **发布/订阅模型**:主题基于发布/订阅模型,其中多个生产者可以发布消息到一个特定的...

    ESB应用JMS_Topic

    ### ESB应用JMS_Topic知识点详解 #### 一、ESB与JMS_Topic简介 **企业服务总线(Enterprise Service Bus, ESB)**是一种软件架构模式,用于实现不同应用程序之间的通信与数据交换。它提供了一种灵活且可扩展的方式...

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

    本文将详细介绍如何在WebLogic中使用JMS来创建Queue(队列)和TOPIC(主题)并进行消息的发送与接收。 ### 一、JMS基本概念 1. **Queue(队列)**:队列是一种点对点的消息传递模型,其中每个消息只会被一个消费者...

    EJB TO JMS

    【EJB to JMS:理解消息传递与JMS Topic】 在企业级Java应用程序中,有时我们需要在不同组件之间传递信息,而无需它们直接相互依赖。这就是Java消息服务(Java Message Service,简称JMS)发挥作用的地方。JMS允许...

    webLogic9.2配置JMS步骤

    WebLogic 9.2配置JMS(Java Message Service)涉及一系列步骤,主要目的是为了实现分布式消息传递,包括点对点的Queue模式和发布/订阅的Topic模式。在本例中,我们将专注于配置发布/订阅模式,即Topic。以下是详细的...

    一个jms activemq Topic 消息实例

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

    spring boot jsm ibmmq topic queue

    标题"spring boot jsm ibmmq topic queue"涉及到的是如何在Spring Boot项目中使用JMS与IBM MQ进行交互,包括发布/订阅模型(Topic)和点对点模型(Queue)两种方式。下面将详细解释这两个概念以及如何在Spring Boot...

    ActiveMq-JMS简单实例使用tomcat.pdf

    &lt;Resource name="jms/topic/MyTopic" auth="Container" type="org.apache.activemq.command.ActiveMQTopic" description="My JMS Topic" physicalName="MyTopic"/&gt; ``` 配置完成后,开发者就可以在Java应用程序中...

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

    一个Topic和subscriber的JMS应用

    标题 "一个Topic和subscriber的JMS应用" 描述了一个基于Java消息服务(JMS)的系统,该系统涉及发布/订阅模式,其中Topic是发布者发送消息的地方,而subscriber是接收这些消息的实体。JMS是一种标准接口,允许应用...

    java.jms.jar JMS需要的JAR包

    `javax.jms.jar` 文件中包含了如`javax.jms.Queue`, `javax.jms.Topic`, `javax.jms.MessageProducer`, `javax.jms.MessageConsumer`, `javax.jms.ConnectionFactory`等关键接口,以及其他辅助类和异常类,开发者...

    JMS实现的信息的广播订阅

    在JMS中,当生产者发布一条消息到Topic时,所有已订阅该Topic的消费者都会接收到这个消息,这与Queue中的一对一通信形成鲜明对比。这种多对多的通信方式使得广播在系统扩展性和分布式通知场景下非常有用。 为了实现...

    Queue与Topic的比较

    Queue 和 Topic 是 JMS(Java Message Service)中两种基本的消息模式,分别对应 Point-to-Point 和 Publish/Subscribe 模式。 Queue 模式 在 Queue 模式中,一条消息仅能被一个消费者(Consumer)接收。如果在...

    JBoss ESB 学习笔记

    - **重点**:使用JMS Topic组件实现发布订阅模式的消息传播。 - **实现**:创建Topic并配置多个订阅者,测试消息的发布与接收机制。 #### 十一、第十个ESB应用Message Filters - **重点**:探索如何使用Message ...

    jms-1.1.jar(jms工具jar包)

    5. **主题(Topic)**:支持多播,允许多个消费者同时接收相同的消息。发布/订阅模型,发布者发布消息到主题,多个订阅者可以订阅该主题并接收消息。 6. **消息代理(Message Broker)**:也称为消息中间件,是负责...

    weblogic+db2部署配置完全手册

    在创建的JMS Server的`Destinations`子目录下,建立多个JMS Queue和JMS Topic,如`Wf_EventQueue`、`Wf_ProcessFinEventQueue`、`Wf_AccountEventQueue`、`Wf_SendSwfEventQueue`以及`Wf_WorklistNotifyTopic`和`BU_...

    hornetq 实例

    - **发布/订阅模型**:多个消费者可以订阅同一主题,消息会被所有订阅者接收,对应于JMS Topic。 5. **hornetqTest实例** "hornetqTest"可能是包含一个或多个测试用例的目录或文件,用于演示或验证HornetQ的功能...

    javax.jms-1.1.jar

    而在发布/订阅模型中,消息被发布到主题(Topic),多个订阅者可以同时接收到消息。 3. **JMS接口**:`javax.jms` 包包含了一系列的接口,如`ConnectionFactory`、`Destination`、`MessageProducer`、`...

Global site tag (gtag.js) - Google Analytics