Apache Active MQ 之Topic:
Pre-Condition:安装好Apache ActiveMQ并启动服务
消费者:
package com.wx.jms.topic;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQTopic;
/**
* @Class name: Topic_Test.java
*
* Short description on the purpose of the program.
*
* @author: wangxiang
* @modified: Mar 22, 2011
*
*/
public class Topic_Test {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection conn = factory.createConnection();
conn.start();
Topic topic = new ActiveMQTopic("mqtopic");
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer consumer1 = session.createConsumer(topic);
consumer1.setMessageListener(new MessageListener(){
public void onMessage(Message msg) {
try {
System.out.println("consumer1:" + ((TextMessage)msg).getText());
} catch (JMSException e) {
e.printStackTrace();
}
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
MessageConsumer consumer2 = session.createConsumer(topic);
consumer2.setMessageListener(new MessageListener(){
public void onMessage(Message msg) {
try {
System.out.println("consumer2:" + ((TextMessage)msg).getText());
} catch (JMSException e) {
e.printStackTrace();
}
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
生产者:
package com.wx.jms.topic;
import javax.jms.Connection;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQTopic;
/**
* @Class name: TopicProducer_Main.java
*
* Short description on the purpose of the program.
*
* @author: wangxiang
* @modified: Mar 22, 2011
*
*/
public class TopicProducer_Main {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(
"tcp://localhost:61616");
Connection conn = factory.createConnection();
conn.start();
Topic topic = new ActiveMQTopic("mqtopic");
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(topic);
for (int i = 1; i < 12; i++) {
producer.send(session.createTextMessage("msg " + i));
}
conn.stop();
}
}
结果:
consumer1:msg 1
consumer2:msg 1
consumer1:msg 2
consumer2:msg 2
consumer1:msg 3
consumer2:msg 3
consumer1:msg 4
consumer2:msg 4
consumer1:msg 5
consumer2:msg 5
consumer1:msg 6
consumer2:msg 6
consumer1:msg 7
consumer2:msg 7
consumer1:msg 8
consumer2:msg 8
consumer1:msg 9
consumer2:msg 9
分享到:
相关推荐
《Active MQ in Action》是关于Apache ActiveMQ的权威指南,由Manning出版社出版。这本书深入浅出地介绍了ActiveMQ这一开源消息代理系统,是理解、配置、管理和优化ActiveMQ的关键资源。ActiveMQ是Apache软件基金会...
ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递协议(Open Message Broker API,JMS)标准,提供了可靠的消息传输服务。在Java开发环境中,Maven是常用的项目构建工具,它通过POM...
ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递协议(Open Message Broker Protocol,即AMQP)和Java消息服务(Java Message Service,JMS)规范。消息队列是分布式系统中的一个重要概念...
在这个"zis.rar_active MQ_activemq_java _activeMQ_java 转发"的压缩包中,我们可以推测其主要内容可能涉及如何使用ActiveMQ在Java环境中实现消息的转发功能。 首先,我们需要理解ActiveMQ的基本概念。ActiveMQ...
ActiveMQ-CPP是Apache ActiveMQ的C++接口,允许开发者使用C++语言与ActiveMQ消息队列服务器进行通信。此外,Winkeemq-cpp是基于ActiveMQ-CPP构建的API库,它进一步简化了编程,通过处理初始化、清理等常规任务,减轻...
ActiveMQ是Apache软件基金会开发的一个开源消息传递平台,支持多种协议,包括NMS(.NET Messaging Service),它是专门为.NET平台设计的ActiveMQ接口。 首先,我们需要了解发布/订阅模式。在这种模式下,生产者...
- 根据消息类型(如点对点Queue或发布订阅Topic),创建消息目标(Destination)。 - 生产者通过会话向目标发送消息,消费者从目标接收消息。 ActiveMQ还支持消息过滤机制,允许生产者为消息设置属性(Properties)...
在高性能的消息系统领域,Artemis已经成为了业界的标准之一。 Artemis的主要特点包括: 1. **高性能**:Artemis为消息的生产与消费提供了高度的并行性支持,大大提升了消息处理的效率。 2. **灵活的地址模型**:...
这篇博客"jms之activeMQ 队列和广播模式例子"主要面向初学者,旨在提供ActiveMQ入门级的知识,通过实例解释队列(Queue)和主题(Topic)这两种基本的消息模式。 首先,我们要理解JMS中的队列和主题的区别。队列...
ActiveMQ是Apache软件基金会开发的一款开源消息代理,它实现了JMS规范,提供了可靠的消息传递功能。通过模拟ActiveMQ代理服务器,我们可以理解JMS的工作原理,并学习如何利用Java代码创建一个简易的消息中间件。 ...
在Spring MVC项目中,我们可以通过XML配置文件来定义ActiveMQ的连接工厂、目的地(如Queue或Topic)以及消息监听器。首先,需要引入ActiveMQ的相关依赖,并在`spring.xml`或`applicationContext.xml`中配置`...
ActiveMQ则是Apache软件基金会开发的一个开源消息中间件,它实现了多种消息协议,如JMS(Java Message Service)、AMQP(Advanced Message Queuing Protocol)等。ActiveMQ的核心功能是提供可靠的消息传递,支持点对...
而ActiveMQ是Apache软件基金会的一款开源消息中间件,它支持多种消息协议,包括MQTT。 Qt是一个跨平台的应用程序开发框架,广泛应用于桌面和移动平台。它提供了丰富的API,使得开发者可以使用C++来创建图形用户界面...
首先,ActiveMQ是由Apache开发的开源消息代理,它是JMS 1.1规范的实现者。ActiveMQ支持多种协议,包括开放消息传递协议(Openwire)、AMQP、STOMP、MQTT和WebSockets,这使得它能够与多种编程语言和平台无缝集成。在...
ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它是Java Message Service (JMS) 的实现,主要用于处理应用程序之间的异步通信。在Java EE环境中,ActiveMQ扮演着关键角色,为分布式系统提供高效率、可靠的...
4. **主题(Topic)与队列(Queue)**: 提供发布/订阅模型(主题)和点对点模型(队列),满足不同场景下的消息传递需求。 5. **管理工具**: 包含一个基于Web的管理控制台,用户可以通过浏览器轻松配置、监控和管理...
ActiveMQ是中国最流行的开源消息中间件之一,由Apache软件基金会开发。它基于Java Message Service (JMS) 规范,提供了可靠的消息传递功能,适用于分布式系统中的应用间通信。本压缩包“activeMQ收发工具.rar”包含...
ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它遵循JMS(Java Message Service)规范,提供高效、可靠的跨语言消息传递能力。Ajax,即Asynchronous JavaScript and XML,是一种创建动态网页的技术,通过在...
ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它基于Java Message Service (JMS) API,为分布式系统提供高效、可靠的消息传递服务。在Java开发领域,ActiveMQ因其易用性、灵活性和强大的功能而备受青睐。...