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

ActiveMQ的一个简单示例

 
阅读更多

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

 

package homework;

import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class ProducerTool ...{

 
private String user = ActiveMQConnection.DEFAULT_USER;

 
private String password = ActiveMQConnection.DEFAULT_PASSWORD;

 
private String url = ActiveMQConnection.DEFAULT_BROKER_URL;

 
private String subject = "TOOL.DEFAULT";

 
private Destination destination = null;

 
private Connection connection = null;

 
private Session session = null;

 
private MessageProducer producer = null;

 
// 初始化
 private void initialize() throws JMSException, Exception ...{
  ActiveMQConnectionFactory connectionFactory 
= new ActiveMQConnectionFactory(
    user, password, url);
  connection 
= connectionFactory.createConnection();
  session 
= connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  destination 
= session.createQueue(subject);
  producer 
= session.createProducer(destination);
  producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
 }


 
// 发送消息
 public void produceMessage(String message) throws JMSException, Exception ...{
  initialize();
  TextMessage msg 
= session.createTextMessage(message);
  connection.start();
  System.out.println(
"Producer:->Sending message: " + message);
  producer.send(msg);
  System.out.println(
"Producer:->Message sent complete!");
 }


 
// 关闭连接
 public void close() throws JMSException ...{
  System.out.println(
"Producer:->Closing connection");
  
if (producer != null)
   producer.close();
  
if (session != null)
   session.close();
  
if (connection != null)
   connection.close();
 }

}


 

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

import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.MessageListener;
import javax.jms.Message;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class ConsumerTool implements MessageListener ...{

 
private String user = ActiveMQConnection.DEFAULT_USER;

 
private String password = ActiveMQConnection.DEFAULT_PASSWORD;

 
private String url = ActiveMQConnection.DEFAULT_BROKER_URL;

 
private String subject = "TOOL.DEFAULT";

 
private Destination destination = null;

 
private Connection connection = null;

 
private Session session = null;

 
private MessageConsumer consumer = null;

 
// 初始化
 private void initialize() throws JMSException, Exception ...{
  ActiveMQConnectionFactory connectionFactory 
= new ActiveMQConnectionFactory(
    user, password, url);
  connection 
= connectionFactory.createConnection();
  session 
= connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  destination 
= session.createQueue(subject);
  consumer 
= session.createConsumer(destination);
  
 }


 
// 消费消息
 public void consumeMessage() throws JMSException, Exception ...{
  initialize();
  connection.start();
  
  System.out.println(
"Consumer:->Begin listening...");
  
// 开始监听
  consumer.setMessageListener(this);
  
// Message message = consumer.receive();
 }


 
// 关闭连接
 public void close() throws JMSException ...{
  System.out.println(
"Consumer:->Closing connection");
  
if (consumer != null)
   consumer.close();
  
if (session != null)
   session.close();
  
if (connection != null)
   connection.close();
 }


 
// 消息处理函数
 public void onMessage(Message message) ...{
  
try ...{
   
if (message instanceof TextMessage) ...{
    TextMessage txtMsg 
= (TextMessage) message;
    String msg 
= txtMsg.getText();
    System.out.println(
"Consumer:->Received: " + msg);
   }
 else ...{
    System.out.println(
"Consumer:->Received: " + message);
   }

  }
 catch (JMSException e) ...{
   
// TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

}



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

下面是测试类Test.java:

 

package homework;

import javax.jms.JMSException;

public class Test ...{

 
/** *//**
  * 
@param args
  
*/

 
public static void main(String[] args) throws JMSException, Exception ...{
  
// TODO Auto-generated method stub
  ConsumerTool consumer = new ConsumerTool();
  ProducerTool producer 
= new ProducerTool();
  
// 开始监听
  consumer.consumeMessage();
  
  
// 延时500毫秒之后发送消息
  Thread.sleep(500);
  producer.produceMessage(
"Hello, world!");
  producer.close();
  
  
// 延时500毫秒之后停止接受消息
  Thread.sleep(500);
  consumer.close();
 }

}

 

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

分享到:
评论

相关推荐

    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