`
fangjh
  • 浏览: 8603 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论

ActiveMQ的一个简单示例

阅读更多

最近由于公司项目需要,开始学习JMS,用的是ActiveMQ。由于这方面网上的例子不是很多,而且有的也不完整。于是经过几天的摸索学习,写了一个简单的小例子,现在贴出来与大家分享。
ProducerTool.java用于发送消息:

java 代码
  1. package homework;   
  2.   
  3. import javax.jms.Connection;   
  4. import javax.jms.DeliveryMode;   
  5. import javax.jms.Destination;   
  6. import javax.jms.JMSException;   
  7. import javax.jms.MessageProducer;   
  8. import javax.jms.Session;   
  9. import javax.jms.TextMessage;   
  10.   
  11. import org.apache.activemq.ActiveMQConnection;   
  12. import org.apache.activemq.ActiveMQConnectionFactory;   
  13.   
  14. public class ProducerTool {   
  15.   
  16.     private String user = ActiveMQConnection.DEFAULT_USER;   
  17.   
  18.     private String password = ActiveMQConnection.DEFAULT_PASSWORD;   
  19.   
  20.     private String url = ActiveMQConnection.DEFAULT_BROKER_URL;   
  21.   
  22.     private String subject = "TOOL.DEFAULT";   
  23.   
  24.     private Destination destination = null;   
  25.   
  26.     private Connection connection = null;   
  27.   
  28.     private Session session = null;   
  29.   
  30.     private MessageProducer producer = null;   
  31.   
  32.     // 初始化   
  33.     private void initialize() throws JMSException, Exception {   
  34.         ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(   
  35.                 user, password, url);   
  36.         connection = connectionFactory.createConnection();   
  37.         session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);   
  38.         destination = session.createQueue(subject);   
  39.         producer = session.createProducer(destination);   
  40.         producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);   
  41.     }   
  42.   
  43.     // 发送消息   
  44.     public void produceMessage(String message) throws JMSException, Exception {   
  45.         initialize();   
  46.         TextMessage msg = session.createTextMessage(message);   
  47.         connection.start();   
  48.         System.out.println("Producer:->Sending message: " + message);   
  49.         producer.send(msg);   
  50.         System.out.println("Producer:->Message sent complete!");   
  51.     }   
  52.   
  53.     // 关闭连接   
  54.     public void close() throws JMSException {   
  55.         System.out.println("Producer:->Closing connection");   
  56.         if (producer != null)   
  57.             producer.close();   
  58.         if (session != null)   
  59.             session.close();   
  60.         if (connection != null)   
  61.             connection.close();   
  62.     }   
  63. }   

 

ConsumerTool.java用于接受消息,我用的是基于消息监听的机制,需要实现MessageListener接口,这个接口有个onMessage方法,当接受到消息的时候会自动调用这个函数对消息进行处理。

java 代码
  1. package homework;   
  2.   
  3. import javax.jms.Connection;   
  4. import javax.jms.Destination;   
  5. import javax.jms.JMSException;   
  6. import javax.jms.MessageConsumer;   
  7. import javax.jms.Session;   
  8. import javax.jms.MessageListener;   
  9. import javax.jms.Message;   
  10. import javax.jms.TextMessage;   
  11.   
  12. import org.apache.activemq.ActiveMQConnection;   
  13. import org.apache.activemq.ActiveMQConnectionFactory;   
  14.   
  15. public class ConsumerTool implements MessageListener {   
  16.   
  17.     private String user = ActiveMQConnection.DEFAULT_USER;   
  18.   
  19.     private String password = ActiveMQConnection.DEFAULT_PASSWORD;   
  20.   
  21.     private String url = ActiveMQConnection.DEFAULT_BROKER_URL;   
  22.   
  23.     private String subject = "TOOL.DEFAULT";   
  24.   
  25.     private Destination destination = null;   
  26.   
  27.     private Connection connection = null;   
  28.   
  29.     private Session session = null;   
  30.   
  31.     private MessageConsumer consumer = null;   
  32.   
  33.     // 初始化   
  34.     private void initialize() throws JMSException, Exception {   
  35.         ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(   
  36.                 user, password, url);   
  37.         connection = connectionFactory.createConnection();   
  38.         session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);   
  39.         destination = session.createQueue(subject);   
  40.         consumer = session.createConsumer(destination);   
  41.            
  42.     }   
  43.   
  44.     // 消费消息   
  45.     public void consumeMessage() throws JMSException, Exception {   
  46.         initialize();   
  47.         connection.start();   
  48.            
  49.         System.out.println("Consumer:->Begin listening...");   
  50.         // 开始监听   
  51.         consumer.setMessageListener(this);   
  52.         // Message message = consumer.receive();   
  53.     }   
  54.   
  55.     // 关闭连接   
  56.     public void close() throws JMSException {   
  57.         System.out.println("Consumer:->Closing connection");   
  58.         if (consumer != null)   
  59.             consumer.close();   
  60.         if (session != null)   
  61.             session.close();   
  62.         if (connection != null)   
  63.             connection.close();   
  64.     }   
  65.   
  66.     // 消息处理函数   
  67.     public void onMessage(Message message) {   
  68.         try {   
  69.             if (message instanceof TextMessage) {   
  70.                 TextMessage txtMsg = (TextMessage) message;   
  71.                 String msg = txtMsg.getText();   
  72.                 System.out.println("Consumer:->Received: " + msg);   
  73.             } else {   
  74.                 System.out.println("Consumer:->Received: " + message);   
  75.             }   
  76.         } catch (JMSException e) {   
  77.             // TODO Auto-generated catch block   
  78.             e.printStackTrace();   
  79.         }   
  80.     }   
  81. }   

 

如果想主动的去接受消息,而不用消息监听的话,把consumer.setMessageListener(this)改为Message message = consumer.receive(),手动去调用MessageConsumer的receive方法即可。

下面是测试类Test.java:

java 代码
  1. package homework;   
  2.   
  3. import javax.jms.JMSException;   
  4.   
  5. public class Test {   
  6.   
  7.     /**  
  8.      * @param args  
  9.      */  
  10.     public static void main(String[] args) throws JMSException, Exception {   
  11.         // TODO Auto-generated method stub   
  12.         ConsumerTool consumer = new ConsumerTool();   
  13.         ProducerTool producer = new ProducerTool();   
  14.         // 开始监听   
  15.         consumer.consumeMessage();   
  16.            
  17.         // 延时500毫秒之后发送消息   
  18.         Thread.sleep(500);   
  19.         producer.produceMessage("Hello, world!");   
  20.         producer.close();   
  21.            
  22.         // 延时500毫秒之后停止接受消息   
  23.         Thread.sleep(500);   
  24.         consumer.close();   
  25.     }   
  26. }   

 

以上就是我学习ActiveMQ之后写的一个简单的例子,希望对你有帮助,如果有什么错误还请指正。 

分享到:
评论
2 楼 loving863 2008-08-29  
很不错! 期待你贴出你其它关于这方面自己的代码,而不是拷过来的,,,,,顶!!!!

期待你提供其他方面的jms 代码,关注你!!!
1 楼 lijuntian526 2007-04-11  
不错,很基础。

相关推荐

    activeMQ代码示例简单通信

    在本文中,我们将深入探讨ActiveMQ,一个基于Java消息服务(JMS)规范的开源消息中间件。ActiveMQ因其高效性、可扩展性、稳定性和安全性,在企业级消息通信领域得到了广泛应用。它允许应用程序通过解耦生产者和消费...

    activeMQ消息队列的简单示例代码

    在这个“activeMQ消息队列的简单示例代码”中,我们将探讨如何使用ActiveMQ进行基本的消息发布与订阅。 首先,要了解ActiveMQ的基本概念: 1. **消息**:在ActiveMQ中,数据以消息的形式在生产者和消费者之间传输...

    activemq+spring demo 简单示例222

    《ActiveMQ与Spring整合的简单示例解析》 在当今的分布式系统中,消息队列作为解耦组件、实现异步处理的重要工具,被广泛应用。本文将以“activemq+spring demo”为例,深入探讨如何将Apache ActiveMQ与Spring框架...

    activeMQ消息中间件入门示例,行行注释

    总之,这个“activeMQ消息中间件入门示例”是学习如何使用ActiveMQ实现消息传递的一个良好起点。通过理解生产者和消费者的交互方式,以及如何配置和连接到ActiveMQ服务器,开发者可以进一步探索和利用ActiveMQ在...

    activemq+spring demo 简单示例

    本`activemq+spring demo`简单示例旨在帮助开发者理解如何在`Spring`环境中集成和使用`ActiveMQ`。通过这个示例,我们可以学习到以下关键知识点: 1. **ActiveMQ的基本概念**:`ActiveMQ`作为消息中间件,负责在...

    ActiveMQ 与Spring结合示例

    以下是一个简单的 XML 配置示例: ```xml <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> ``` 这里,我们创建了一个 `ActiveMQConnectionFactory` 实例,并设置了...

    一个activeMQ的简单例子

    本示例将介绍如何使用ActiveMQ实现一个简单的消息队列应用。 首先,我们需要理解消息队列(Message Queue)的概念。消息队列是一种异步通信模式,允许应用程序之间通过消息进行通信,而无需直接调用对方。这种解耦...

    activeMQ的一个简单的demo

    在这个"activeMQ的一个简单的demo"中,我们可以看到一个可以直接运行的示例项目,包含了所有必要的组件,如Java源代码、配置文件和依赖的jar包。 首先,让我们了解ActiveMQ的基本概念。ActiveMQ作为消息代理,它...

    activeMQ简单入门案例

    本教程将引导你通过一个简单的入门案例了解如何使用ActiveMQ实现生产者与消费者的模式。 首先,我们需要了解ActiveMQ的基本概念。在消息队列中,生产者是发送消息的实体,而消费者则是接收和处理这些消息的实体。...

    Apache ActiveMQ 入门最简单例子

    在本文中,我们将深入探讨如何通过Apache ActiveMQ 5.8版本进行入门,以及如何构建一个简单的Master环境。 首先,我们要了解消息队列(Message Queue)的基本概念。消息队列是一种异步通信机制,它允许应用程序之间...

    activeMQ的java简单实例.zip

    在这个"activeMQ的java简单实例.zip"压缩包中,我们可能找到了一个简单的Java项目,用于演示如何在Java应用中集成和使用ActiveMQ。以下是一些关于ActiveMQ和Java集成的关键知识点: 1. **ActiveMQ安装与配置**:...

    activemq_demo,activeMQ的简单demo

    【描述】中提到的"activeMQ的简单demo"是指一个基础的示例项目,旨在帮助开发者快速理解和使用ActiveMQ。通过导入此项目并运行,你可以直观地看到ActiveMQ如何工作,如何发送和接收消息,以及如何配置和管理消息队列...

    ActiveMQ简单Demo案例

    在这个"ActiveMQ简单Demo案例"中,我们将探讨如何使用ActiveMQ搭建服务器,并创建生成者(Producer)和消费者(Consumer)对象。 首先,我们需要理解JMS的概念。JMS是一个标准,定义了与消息传递系统交互的API,...

    ActiveMQ的简单例子

    本教程将通过一个简单的例子介绍ActiveMQ的两个核心模式:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。我们将使用IntelliJ IDEA作为集成开发环境来实现这些示例。 首先,我们需要...

    ActiveMQ中间件C#示例

    以下是一个简单的代码示例: ```csharp using Apache.NMS; using Apache.NMS.Stomp; // 创建连接工厂 var cf = new ConnectionFactory("stomp://localhost:61613"); // 创建连接 using (var connection = cf....

    activeMQ_spring简单案例(含XML配置)

    在本文中,我们将深入探讨如何将ActiveMQ与Spring框架整合,构建一个简单的消息传递系统。ActiveMQ是Apache软件基金会开发的开源消息中间件,而Spring则是一个广泛使用的Java企业级应用开发框架。将两者结合,我们...

    activemq的简单配置

    ActiveMQ是Apache软件基金会提供的一个开源消息中间件项目,其主要功能是作为一个消息的接收和转发容器,用于实现消息队列服务。ActiveMQ支持两种基本的角色模型:**生产者(Producer)**和**消费者(Consumer)**。...

    activeMQ一个demo

    例如,以下是一个简单的Java代码示例,展示了如何向ActiveMQ队列发送和接收消息: ```java import javax.jms.*; public class ActiveMQDemo { public static void main(String[] args) throws JMSException { //...

    ActiveMq-JMS简单实例

    这通常涉及修改Tomcat的server.xml文件,添加一个Context元素来指向ActiveMQ的web应用目录。 在"ActiveMq-JMS简单实例使用tomcat.doc"中,可能详细介绍了如何配置Tomcat和ActiveMQ,包括启动和停止ActiveMQ服务的...

    activeMQ的java简单实例

    以下是一个简化的Java代码示例: ```java import org.apache.activemq.ActiveMQConnectionFactory; // 创建连接工厂 ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616...

Global site tag (gtag.js) - Google Analytics