最近由于公司项目需要,开始学习JMS,用的是ActiveMQ。由于这方面网上的例子不是很多,而且有的也不完整。于是经过几天的摸索学习,写了一个简单的小例子,现在贴出来与大家分享。
ProducerTool.java用于发送消息:
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方法,当接受到消息的时候会自动调用这个函数对消息进行处理。
java 代码
- 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);
-
- }
-
-
- 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) {
-
- e.printStackTrace();
- }
- }
- }
如果想主动的去接受消息,而不用消息监听的话,把consumer.setMessageListener(this)改为Message message = consumer.receive(),手动去调用MessageConsumer的receive方法即可。
下面是测试类Test.java:
java 代码
- package homework;
-
- import javax.jms.JMSException;
-
- public class Test {
-
-
-
-
- public static void main(String[] args) throws JMSException, Exception {
-
- ConsumerTool consumer = new ConsumerTool();
- ProducerTool producer = new ProducerTool();
-
- consumer.consumeMessage();
-
-
- Thread.sleep(500);
- producer.produceMessage("Hello, world!");
- producer.close();
-
-
- Thread.sleep(500);
- consumer.close();
- }
- }
以上就是我学习ActiveMQ之后写的一个简单的例子,希望对你有帮助,如果有什么错误还请指正。
分享到:
相关推荐
在本文中,我们将深入探讨ActiveMQ,一个基于Java消息服务(JMS)规范的开源消息中间件。ActiveMQ因其高效性、可扩展性、稳定性和安全性,在企业级消息通信领域得到了广泛应用。它允许应用程序通过解耦生产者和消费...
在这个“activeMQ消息队列的简单示例代码”中,我们将探讨如何使用ActiveMQ进行基本的消息发布与订阅。 首先,要了解ActiveMQ的基本概念: 1. **消息**:在ActiveMQ中,数据以消息的形式在生产者和消费者之间传输...
《ActiveMQ与Spring整合的简单示例解析》 在当今的分布式系统中,消息队列作为解耦组件、实现异步处理的重要工具,被广泛应用。本文将以“activemq+spring demo”为例,深入探讨如何将Apache ActiveMQ与Spring框架...
总之,这个“activeMQ消息中间件入门示例”是学习如何使用ActiveMQ实现消息传递的一个良好起点。通过理解生产者和消费者的交互方式,以及如何配置和连接到ActiveMQ服务器,开发者可以进一步探索和利用ActiveMQ在...
本`activemq+spring demo`简单示例旨在帮助开发者理解如何在`Spring`环境中集成和使用`ActiveMQ`。通过这个示例,我们可以学习到以下关键知识点: 1. **ActiveMQ的基本概念**:`ActiveMQ`作为消息中间件,负责在...
以下是一个简单的 XML 配置示例: ```xml <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> ``` 这里,我们创建了一个 `ActiveMQConnectionFactory` 实例,并设置了...
本示例将介绍如何使用ActiveMQ实现一个简单的消息队列应用。 首先,我们需要理解消息队列(Message Queue)的概念。消息队列是一种异步通信模式,允许应用程序之间通过消息进行通信,而无需直接调用对方。这种解耦...
在这个"activeMQ的一个简单的demo"中,我们可以看到一个可以直接运行的示例项目,包含了所有必要的组件,如Java源代码、配置文件和依赖的jar包。 首先,让我们了解ActiveMQ的基本概念。ActiveMQ作为消息代理,它...
本教程将引导你通过一个简单的入门案例了解如何使用ActiveMQ实现生产者与消费者的模式。 首先,我们需要了解ActiveMQ的基本概念。在消息队列中,生产者是发送消息的实体,而消费者则是接收和处理这些消息的实体。...
在本文中,我们将深入探讨如何通过Apache ActiveMQ 5.8版本进行入门,以及如何构建一个简单的Master环境。 首先,我们要了解消息队列(Message Queue)的基本概念。消息队列是一种异步通信机制,它允许应用程序之间...
在这个"activeMQ的java简单实例.zip"压缩包中,我们可能找到了一个简单的Java项目,用于演示如何在Java应用中集成和使用ActiveMQ。以下是一些关于ActiveMQ和Java集成的关键知识点: 1. **ActiveMQ安装与配置**:...
【描述】中提到的"activeMQ的简单demo"是指一个基础的示例项目,旨在帮助开发者快速理解和使用ActiveMQ。通过导入此项目并运行,你可以直观地看到ActiveMQ如何工作,如何发送和接收消息,以及如何配置和管理消息队列...
在这个"ActiveMQ简单Demo案例"中,我们将探讨如何使用ActiveMQ搭建服务器,并创建生成者(Producer)和消费者(Consumer)对象。 首先,我们需要理解JMS的概念。JMS是一个标准,定义了与消息传递系统交互的API,...
本教程将通过一个简单的例子介绍ActiveMQ的两个核心模式:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。我们将使用IntelliJ IDEA作为集成开发环境来实现这些示例。 首先,我们需要...
以下是一个简单的代码示例: ```csharp using Apache.NMS; using Apache.NMS.Stomp; // 创建连接工厂 var cf = new ConnectionFactory("stomp://localhost:61613"); // 创建连接 using (var connection = cf....
在本文中,我们将深入探讨如何将ActiveMQ与Spring框架整合,构建一个简单的消息传递系统。ActiveMQ是Apache软件基金会开发的开源消息中间件,而Spring则是一个广泛使用的Java企业级应用开发框架。将两者结合,我们...
ActiveMQ是Apache软件基金会提供的一个开源消息中间件项目,其主要功能是作为一个消息的接收和转发容器,用于实现消息队列服务。ActiveMQ支持两种基本的角色模型:**生产者(Producer)**和**消费者(Consumer)**。...
例如,以下是一个简单的Java代码示例,展示了如何向ActiveMQ队列发送和接收消息: ```java import javax.jms.*; public class ActiveMQDemo { public static void main(String[] args) throws JMSException { //...
这通常涉及修改Tomcat的server.xml文件,添加一个Context元素来指向ActiveMQ的web应用目录。 在"ActiveMq-JMS简单实例使用tomcat.doc"中,可能详细介绍了如何配置Tomcat和ActiveMQ,包括启动和停止ActiveMQ服务的...
以下是一个简化的Java代码示例: ```java import org.apache.activemq.ActiveMQConnectionFactory; // 创建连接工厂 ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616...