`
zhaohaolin
  • 浏览: 1011196 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ActiveMQ实战之 Topic发布订阅消息【转】

    博客分类:
  • JMS
阅读更多

对于此类消息,其实就是指使用JMS中的发布订阅消息模型的消息,下面是一个简单的例子

消息发布者

  1. package  com.googlecode.garbagecan.jmsstudy.activemq.topic;  
  2.   
  3. import  org.apache.activemq.ActiveMQConnectionFactory;  
  4.   
  5. import  javax.jms.*;  
  6.   
  7. public   class  TopicPublisher {  
  8.     public   static   void  main(String[] args)  throws  JMSException {  
  9.         ActiveMQConnectionFactory factory = new  ActiveMQConnectionFactory( "tcp://localhost:61616" );  
  10.         Connection connection = factory.createConnection();  
  11.         connection.start();  
  12.           
  13.         Session session = connection.createSession(false , Session.AUTO_ACKNOWLEDGE);  
  14.         Topic topic = session.createTopic("myTopic.messages" );  
  15.   
  16.         MessageProducer producer = session.createProducer(topic);  
  17.         producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);  
  18.   
  19.         while ( true ) {  
  20.             TextMessage message = session.createTextMessage();  
  21.             message.setText("message_"  + System.currentTimeMillis());  
  22.             producer.send(message);  
  23.             System.out.println("Sent message: "  + message.getText());  
  24.   
  25.             try  {  
  26.                 Thread.sleep(1000 );  
  27.             } catch  (InterruptedException e) {  
  28.                 e.printStackTrace();  
  29.             }  
  30.         }  
  31.   
  32. //      session.close();   
  33. //      connection.stop();   
  34. //      connection.close();   
  35.     }  
  36. }  

消息订阅者(消息消费者)

  1. package  com.googlecode.garbagecan.jmsstudy.activemq.topic;  
  2.   
  3. import  org.apache.activemq.ActiveMQConnectionFactory;  
  4.   
  5. import  javax.jms.*;  
  6.   
  7. public   class  TopicSubscriber {  
  8.     public   static   void  main(String[] args)  throws  JMSException {  
  9.         ActiveMQConnectionFactory factory = new  ActiveMQConnectionFactory( "tcp://localhost:61616" );  
  10.         Connection connection = factory.createConnection();  
  11.         connection.start();  
  12.           
  13.         Session session = connection.createSession(false , Session.AUTO_ACKNOWLEDGE);  
  14.         Topic topic = session.createTopic("myTopic.messages" );  
  15.   
  16.         MessageConsumer consumer = session.createConsumer(topic);  
  17.         consumer.setMessageListener(new  MessageListener() {  
  18.             public   void  onMessage(Message message) {  
  19.                 TextMessage tm = (TextMessage) message;  
  20.                 try  {  
  21.                     System.out.println("Received message: "  + tm.getText());  
  22.                 } catch  (JMSException e) {  
  23.                     e.printStackTrace();  
  24.                 }  
  25.             }  
  26.         });  
  27. //      session.close();   
  28. //      connection.stop();   
  29. //      connection.close();   
  30.     }  
  31. }  

分别运行两个类,就可以看到Publisher发布的类,Subscriber都可以接受到。

分享到:
评论

相关推荐

    ActiveMQ 实战

    而在发布/订阅消息传递域中,目的地被称为主题(topic),消息可被多个消费者消费。 消息生产者是会话创建的对象,用于将消息发送到指定的目的地。消息消费者是会话创建的对象,用于接收发送到目的地的消息。消息...

    activeMq 实战

    ### ActiveMQ 实战 #### JMS 基本构件概览 **ActiveMQ** 是一个高性能、功能丰富的开源消息中间件,它实现了 **Java Message Service (JMS)** 规范。JMS 规范定义了一组接口,这些接口提供了一个标准的方式来进行...

    activeMQ实战demo

    5. **消息类型和模式**:ActiveMQ支持点对点(Queue)和发布/订阅(Topic)两种消息模式。点对点模式下,消息仅被一个消费者接收;发布/订阅模式下,消息可以被多个订阅者接收。 6. **高级特性**:ActiveMQ还提供了...

    ActiveMQ 使用Ajax 收发消息实战

    6. **前端集成**:在JavaScript代码中,需要创建WebSocket连接,然后使用Stomp.js订阅和发布消息。订阅者可以监听特定的队列或主题,而发布者则向这些目标发送消息。 7. **后端整合**:在后端,可能需要一个处理...

    ActiveMQ实战——实现一个简易版的聊天室

    在本篇《ActiveMQ实战——实现一个简易版的聊天室》中,我们将深入探讨如何利用Apache ActiveMQ构建一个简单的在线聊天应用。ActiveMQ是Apache软件基金会的一个开源项目,它是一款功能强大的消息中间件,用于在...

    2019实战ActiveMQ集群与应用实战视频教程

    - **定义**:ActiveMQ 是一个开源的消息中间件,它支持多种消息传递模式,如点对点 (PTP) 和发布/订阅 (Pub/Sub)。 - **特点**: - 支持多种协议,如 AMQP、STOMP、MQTT 等。 - 提供持久化存储选项,包括 KahaDB ...

    使用ActiveMQ示例.pdf

    在 JMS 中,主要有两个消息模型:点对点(Queue)和发布/订阅(Topic)。点对点模型中,消息由一个生产者发送到队列,一个消费者接收并处理该消息,一旦被消费,消息就会从队列中移除。而发布/订阅模型中,消息发布...

    activemq实战项目,同ssh框架整合(生产者+消费者)

    - **消息模型**:ActiveMQ支持多种消息模型,如点对点(Queue)和发布/订阅(Topic),分别适用于一对一和一对多的通信场景。 - **协议支持**:ActiveMQ支持多种消息协议,如开放消息传递接口(Openwire)、简单...

    activemq-example

    3. 主题示例:解释如何发布消息到主题,以及创建持久订阅和临时订阅。 4. 选择器:介绍如何使用消息选择器,让消费者只接收满足特定条件的消息。 5. 安全与认证:展示如何配置ActiveMQ的用户权限和身份验证。 6. ...

    ActiveMQ in Action

    - **发布/订阅(Topic)**:多个消费者可以订阅同一个主题,当消息发布时,所有订阅者都能接收到,适合广播信息。 5. **ActiveMQ实战应用**: - **解耦**:ActiveMQ可以帮助系统组件之间解耦,降低依赖性,提高...

    activemq安装包与demo

    1. **JMS 概念**:JMS 提供了两种消息模型——点对点(Queue)和发布/订阅(Topic)。点对点模式下,每个消息仅被一个消费者接收;发布/订阅模式下,消息可被多个订阅者接收。 2. **创建连接**:使用 JMS API 创建与...

    消息队列介绍和SpringBoot2.x整合RockketMQ、ActiveMQ

    4. **多种消息模型**:支持点对点(Queue)和发布/订阅(Topic)两种消息模型。 5. **性能优化**:ActiveMQ使用高效的内存管理策略,以减少磁盘I/O操作,提高消息处理速度。 6. **多语言支持**:提供了多种语言的...

    activeMQ.zip

    在这个模型中,生产者发布消息到一个主题,而所有订阅了该主题的消费者都能接收到消息。这使得广播消息和事件驱动的架构成为可能。在activeMQ.zip中,可能会有代码演示如何创建主题,注册订阅者,并发送消息到主题上...

    JMS模拟ActiveMQ代理服务器并实现消息收发

    总的来说,这个项目为我们提供了一个实战学习JMS和ActiveMQ的平台,通过源码分析,我们可以深入理解JMS的API用法,以及如何利用这些工具构建一个简单的消息系统。这有助于我们在实际开发中更好地应用消息队列技术,...

    activeMQ 与 quartz 事例

    - **主题(Topic)**:广播模式,所有订阅者都能接收到消息。 - **队列(Queue)**:点对点模式,每条消息仅由一个消费者接收。 3. **Quartz介绍**:Quartz是一个开源的作业调度框架,可以精确控制任务的执行时间...

    spring 与ACTIVEMQ整合

    4. **定义Destination**:定义消息的目的地,可以是Queue(点对点)或Topic(发布/订阅模型)。 5. **配置MessageListenerContainer**:创建`DefaultMessageListenerContainer`,用于监听消息。可以设置并发消费者...

    activeMQ实例

    5. **主题(Topic)**:多播数据结构,允许多个消费者同时订阅并接收到消息。 6. **Broker**:ActiveMQ服务器,负责存储、路由和传递消息。 二、安装与配置ActiveMQ 1. **下载**:从官方网站获取最新版本的...

    ActiveMQ In Action.zip

    - Destination:消息的目的地,可以是Queue(点对点通信)或Topic(发布/订阅模式)。 4. **ActiveMQ的使用场景** - 异步处理:将耗时操作从主业务流程中分离,提高系统响应速度。 - 负载均衡:通过多个Consumer...

    ActiveMQ消息中间件面试专题.zip

    - **主题(Topic)与队列(Queue)**:主题支持多播,即一条消息可以被多个订阅者消费;队列则支持单播,消息只会被一个消费者消费。 - **持久化**:ActiveMQ允许消息持久化,即使在服务器重启后也能恢复未处理的...

    activemq中间件视频教程

    - **发布/订阅(Pub/Sub)**:介绍主题(Topic)的概念,实现一对多的消息广播,多个订阅者可以同时接收到消息。 5. **高级特性** - **事务支持**:讲解JMS事务,确保消息在成功处理后才被确认。 - **消息重试与...

Global site tag (gtag.js) - Google Analytics