`

ActiveMQ(二)——ActiviteMQ实现方式之一:JMS

 
阅读更多

新建一个java project:ActiveMQTest

从apache-activemq-5.8.0\lib文件夹下导入activemq相关的jar包(该文件夹下的jar基本都能满足需求,只需从该文件夹下导入即可)。

 

消息发送方代码:

package com.mycom.activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

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

/**
 * ActiviteMQ方式1:JMS方式
 * 消息接收方(消费者)
 * 
 * @author guweiqiang
 */
public class JMSReceiver {

	/**
	 * 接收消息
	 */
	public static void receiveMessage(String brokerUrl) {
		// ConnectionFactory:连接工厂
		ConnectionFactory connectionFactory;

		// Connection:JMS客户端到JMS Provider的连接
		Connection connection = null;

		// Session:发送/接收消息的会话
		Session session = null;

		// Destination:消息目的地
		Destination destination;

		// MessageConsumer:消息消费者
		MessageConsumer messageConsumer;

		try {
			// 创建连接工厂ConnectionFactory实例
			connectionFactory = new ActiveMQConnectionFactory(
					ActiveMQConnection.DEFAULT_USER,
					ActiveMQConnection.DEFAULT_PASSWORD, brokerUrl);

			// 创建连接对象
			connection = connectionFactory.createConnection();

			// 启动连接
			connection.start();

			// 创建发送/接收消息的会话
			session = connection.createSession(Boolean.TRUE,
					Session.AUTO_ACKNOWLEDGE);

			// 创建消息目的地
			destination = session.createQueue("FirstQueue");

			// 创建消息消费方
			messageConsumer = session.createConsumer(destination);

			// 准备工作已经完成,可以开始接收消息了
			while (true) {
				TextMessage message = (TextMessage) messageConsumer
						.receive(100 * 1000);
				if (message != null) {
					System.out.println("接收到消息:" + message.getText());
				} else {
					break;
				}
			}

			// 提交会话
			session.commit();

		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			// 释放资源
			if (session != null) {
				try {
					session.close();
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
			if (connection != null) {
				try {
					connection.close();
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
		}
	}

	/**
	 * 测试
	 */
	public static void main(String[] args) {
		String brokerUrl = "tcp://127.0.0.1:61616";
		JMSReceiver.receiveMessage(brokerUrl);
	}
}

 

消息接收方代码:

package com.mycom.activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
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;

/**
 * ActiviteMQ方式1:JMS方式
 * 消息发送方(生产者)
 * 
 * @author guweiqiang
 */
public class JMSSender {

	/**
	 * 发送消息
	 */
	public static void sendMessage(String brokerUrl, String msg) {
		// ConnectionFactory:连接工厂
		ConnectionFactory connectionFactory;

		// Connection:JMS客户端到JMS Provider的连接
		Connection connection = null;

		// Session:发送/接收消息的会话
		Session session = null;

		// Destination:消息目的地
		Destination destination;

		// MessageProducer:消息生产者
		MessageProducer messageProducer;

		try {
			// 创建一个连接工厂ConnectionFactory实例
			connectionFactory = new ActiveMQConnectionFactory(
					ActiveMQConnection.DEFAULT_USER,
					ActiveMQConnection.DEFAULT_PASSWORD, brokerUrl);

			// 创建连接对象
			connection = connectionFactory.createConnection();

			// 启动连接
			connection.start();

			// 创建发送/接收消息的会话
			session = connection.createSession(Boolean.TRUE,
					Session.AUTO_ACKNOWLEDGE);

			// 创建消息目的地
			destination = session.createQueue("FirstQueue");

			// 创建消息发送方(生产者)
			messageProducer = session.createProducer(destination);
			messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); // 设置是否持久化

			// 准备工作已经完成,可以开始发送消息了
			// 发送消息
			TextMessage message = session.createTextMessage(msg);
			messageProducer.send(message);
			System.out.println("发送消息:" + message.getText());

			// 提交会话
			session.commit();

		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			// 释放资源
			if (session != null) {
				try {
					session.close();
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}

			if (connection != null) {
				try {
					connection.close();
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
		}

	}

	/**
	 * 测试方法
	 */
	public static void main(String[] args) {
		String brokerUrl = "tcp://127.0.0.1:61616";
		String msg = "test mq msg";
		JMSSender.sendMessage(brokerUrl, msg);
	}
}

 

启动ActiveMQ,再在本地执行上述发送方和接收方代码,运行结果如下:

发送方console:

发送消息:test mq msg

 

接收方console:

接收到消息:test mq msg

 

 

 

分享到:
评论

相关推荐

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

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

    ActiveMQ 集群——JDBC Master Slave + Broker Cluster

    Broker Cluster 模式是 ActiveMQ 集群中的另一种实现方式。在这个模式下,我们可以将多个 Broker 服务器组合在一起,以提高系统的可扩展性和可靠性。 要配置 Broker Cluster 模式,我们需要配置每个 Broker 服务器...

    Spring 实现远程访问详解——jms和activemq

    本章我将通过spring jms和activemq实现单Web项目服务器间异步访问和多Web项目服务器间异步访问。 一. 简介 1. 什么是Apache ActiveMq Apache ActiveMq是最流行和最强大的开源消息和集成服务器。同时Apache ActiveMq...

    javax.jms-1.1.jar

    `javax.jms-1.1.jar` 是一个Java Message Service(JMS)的API库,它属于Java标准版(Java Standard Edition, Java SE)的一部分。JMS是Java平台上的一个规范,用于在分布式环境中进行异步消息传递。这个库主要用于...

    JMS 使用 ActiveMQ 传送文件

    3. **jms规范教程.pdf** - 这是一个关于JMS规范的教程,可能详细讲解了JMS接口、消息类型(如点对点和发布/订阅模型)、消息队列和主题等核心概念,为理解JMS和ActiveMQ的工作原理提供了基础。 综上所述,这个主题...

    JMS学习笔记(一)——JMS简介安装ActiveMQ

    **JMS学习笔记(一)——JMS简介与ActiveMQ安装** Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的标准接口。它为应用程序提供了一种标准的方式,用来创建、发送、接收和读取...

    activeMQ JMS 3种创建方式

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它实现了Java消息服务(JMS)标准,为分布式系统提供高效、可靠的消息传递。在ActiveMQ中,有三种主要的方式来创建消息队列(QUEUE)和主题(TOPIC),这些...

    JMS之Spring +activeMQ实现消息队列

    总结起来,"JMS之Spring + ActiveMQ实现消息队列"涉及到的关键知识点包括:Spring框架的JMS支持、ActiveMQ的使用、ConnectionFactory的配置、JmsTemplate和MessageListener的实现,以及消息队列在解决系统解耦和异步...

    一头扎进JMS之ActiveMQ系列

    在这个“一头扎进JMS之ActiveMQ系列”中,我们将深入探讨这个流行的开源消息代理——ActiveMQ,它是Apache软件基金会的项目,广泛应用于各种企业级应用。 ActiveMQ作为JMS的实现,提供了多种协议支持,包括开放标准...

    ActiveMQ 入门实战(3)--SpringBoot 整合 ActiveMQ(csdn)————程序.pdf

    - **ActiveMQ**:Apache ActiveMQ 是一个开源的消息中间件,它实现了 Java Message Service (JMS) 规范,提供可靠的消息传递和队列管理。 - **JMS**:Java Message Service 是一个标准接口,用于在分布式环境中交换...

    JMS ACTIVEMQ 教程文档

    Apache ActiveMQ 是一个开源的JMS提供商,它是Apache软件基金会的一部分,也是最广泛使用的JMS实现之一。ActiveMQ提供了多种协议支持,包括开放消息传递协议(STOMP)、AMQP、MQTT等,使得它能够与各种不同类型的...

    ActiveMQ在JMS中的运用-深入浅出JMS

    **ActiveMQ在JMS中的应用——深入理解JMS** Java消息服务(Java Message Service,简称JMS)是一种标准API,用于在Java应用程序之间传递消息,它提供了一种解耦和异步处理数据的方式。JMS允许应用程序创建、发送、...

    test_jms.zip_activemq_activemq案例_jms_jms test

    "activemq案例"暗示这是一个示例代码或教程,用于演示如何在ActiveMQ上实现JMS功能。"jms_test"可能是该项目中的测试部分。 描述"jms简单的案例,用的activemq,使用jms前请先启动activemq服务器"表明这是一个初级...

    JMS ActiveMQ

    JMS提供了一种异步通信的方式,确保了不同应用程序之间通信的一致性和可靠性。JMS中的主要组件包括: 1. 消息(Message):数据结构,用于传递信息,可以是请求、响应或事件。 2. JMS客户端:使用JMS API发送和接收...

    Spring整合Blazeds实现ActiveMQ JMS消息服务

    标题中的“Spring整合Blazeds实现ActiveMQ JMS消息服务”指的是在Java应用程序中使用Spring框架与Blazeds(一个Flex和Java之间的消息传递中间件)集成,通过ActiveMQ(一个流行的开源JMS提供商)来实现消息队列服务...

    JMS,ActiveMQ 内部实现的研究

    Apache ActiveMQ是基于JMS的一个开源消息代理和队列服务器,它是Apache软件基金会的一部分。ActiveMQ提供了多种协议的支持,包括OpenWire、STOMP、AMQP、MQTT和WS-Notification,使其能够与其他平台和语言进行通信。...

    spring整合JMS-居于ActiveMQ实现

    Spring整合JMS基于ActiveMQ实现是一项常见的企业级应用开发任务,它涉及到Spring框架、Java消息服务(JMS)以及ActiveMQ消息中间件的使用。在本文中,我们将深入探讨这三个关键概念,以及如何将它们有效地结合在一起...

    activeMq jms需要的jar包

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它基于Java Message Service(JMS)标准,为分布式系统提供高效、可靠的消息传递服务。在使用ActiveMQ时,开发者通常需要引入特定的JAR包来实现与ActiveMQ...

Global site tag (gtag.js) - Google Analytics