最近看公司的项目中用到JMS,曾经写代码的时候也用过JMS来发送消息,但是用的东西都是老大封装好的,不知道究竟JMS是怎么一回事,这两天有空自己找了点资料了解了一下,但是我也是自学的小菜鸟,不能确定我下边写的demo完全可靠,如果有错误请大神们多多指点。
1、JMS简介:JMS即Java Message Service,是Java 程序创建、发送、接收和读取企业消息传送系统的消息提供了一种常用的方式。个人感觉JMS类似与JDBC,Java提供一个接口让不同的厂商去实现,常见的实现有ActiveMQ、JBoss MQ、IBM Websphere MQ等,我在demo中用的是ActiveMQ。关于JMS的简介网上有许多不错的文章我也是看他们学习JMS的,当然学一个东西前我们首先大概了解他们是干嘛的,个人觉得还是有必要的。简介在此就不再赘述了,附件中的JavaEE_CN.chm文档中查看javax.JMS也会有较为详细的叙述。推荐几篇不错的文章大家可以去看看http://somebody-hjh.iteye.com/blog/726050(理论和实践相结合写的相当不错)http://www.open-open.com/doc/view/aa41a61492b445b9bc69204eccecf26d(基本上都是理论,但是对JMS的知识点写的非常详尽)。
2、准备工作:根据你的需求到apache官网下载ActiveMQ的安装包http://activemq.apache.org/download-archives.html,我下载的是apache-activemq-5.5.1版本的。
(像是这种东东或者jar包一般到官网上去下载就可以了,方便省事,不用到网上去求。大多数下载还要积分,这种做法我觉得的很恶心,许多东西用谷歌搜出来到哪些外文网站上就可以直接下载下来。但是它也有两个缺点,一、对于我们这种英语不大好的找到下载的地方比较费劲;二、下载速度会比较慢一些)
3、解压下载的zip包,运行bin下的activemq.bat文件,启动MQ服务。
4、在浏览器中输入:http://localhost:8161/查看是否已成功启动MQ服务,在启动后程序有两个端口会被MQ占用:8161和61616,8161被ActiveMQ自带的web应用程序占用改应用程序可以用来管理消息,61616而用来等待JMS client的连接。
5、完成上述工作后开始写第一个小demo发送一段字符串:
写程序之前我们首先需要引用下边两个jar包,第一个包在先前解压的文件中有可以去复制过来,第二个是日志文件的一个包,我刚开始做的时候报错下边这样的错误,在网上自己下载了个日志文件的jar包弄进去就好了,后来发现在解压文件里边中ib------》optional下有这样两个jar包log4j-1.2.14.jar、slf4j-log4j12-1.5.11.jar,引入就好使了
7、发送JMS消息
public class QueueSend { public static void main(String[] args) throws JMSException { ConnectionFactory connectionfactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); //创建与JMS服务的连接:ConnectionFactory被管理的对象,由客户端创建,用来创建一个连接对象 Connection connection = connectionfactory.createConnection();//获取连接,connection一个到JMS系统提供者的活动连接 Session session =connection.createSession(false,Session.AUTO_ACKNOWLEDGE );//打开会话,一个单独的发送和接受消息的线程上下文 Queue queue = new ActiveMQQueue("queue.msgText"); MessageProducer msgProducer = session.createProducer(queue); Message msg = session.createTextMessage("使用jms发送文本消息"); msgProducer.send(msg); System.out.println("文本消息已发送"); session.close(); connection.close(); } }
8、接受JMS消息
public class QueuesAccept { public static void main(String[] args) throws JMSException { String jmsProviderAddress = "tcp://localhost:61616";// 地址 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(jmsProviderAddress); Connection conn = connectionFactory.createConnection(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); String destinationName = "userId"; Destination dest = session.createQueue(destinationName); MessageConsumer consumer = session.createConsumer(dest); conn.start(); TextMessage textMessage = (TextMessage) consumer.receive();//先手动接受JMS消息,这儿可以用监听 String text = textMessage.getText(); System.out.println("发送内容为:" + text); consumer.close(); session.close(); conn.close(); } }
第一个demo就搞定了,发送JMS后可以在ActiveMQ自带的web应用程序中查看到发送消息的相关信息。
相关推荐
**JMS学习笔记精心总结** Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的一种标准接口。它允许应用程序创建、发送、接收和读取消息,使得应用程序能够在不直接连接的情况下...
在本篇ActiveMQ学习笔记中,我们将探讨JMS(Java Message Service)与Spring框架的集成。JMS是一种标准API,用于在分布式环境中进行异步消息传递,而Spring框架则为开发人员提供了强大的依赖注入和管理服务的能力。...
**ActiveMQ学习笔记之一——ActiveMQ下载** ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它是基于Java消息服务(JMS)规范的,用于在分布式系统中传递消息。作为一个高性能、可伸缩且可靠的解决方案,...
### ActiveMQ学习笔记知识点梳理 #### 一、ActiveMQ简介与消息传递机制 **ActiveMQ**是一款开源的消息中间件,支持多种消息传输协议,如AMQP、STOMP、MQTT等,广泛应用于分布式系统中进行消息传递。在ActiveMQ的...
这篇"ActiveMQ学习笔记之九--发送消息到队列中"主要探讨的是如何通过编程方式向ActiveMQ队列发送消息,这对于理解和应用消息中间件至关重要。 首先,我们要理解ActiveMQ中的队列(Queue)概念。队列是一种先进先出...
本文主要探讨的是消息中间件(Message-Oriented Middleware,简称MOM),特别是在Java消息服务(Java Message Service,JMS)的学习笔记。 JMS是Java平台上的一个标准API,用于在分布式环境中进行异步消息传递。它...
内容可能包括安装ActiveMQ、配置JMS连接、创建和管理队列与主题、调试和监控以及性能优化等方面。 4. **JMS简明教程** 这份教程可能提供了JMS基础概念的快速入门,包括消息类型(如TextMessage、ObjectMessage等...
通过阅读**jms学习笔记.docx** 和 **JMS例子.docx**,你可以深入理解JMS的使用方式,获取实践经验。而 **JMS教程.pdf** 和 **基于XML和JMS的异构数据交换集成的研究.pdf** 则提供了理论基础和高级应用场景的讲解,有...
在本篇ActiveMQ学习笔记中,我们将探讨如何通过纯代码方式启动一个嵌入式的Broker,这对于测试、开发或者快速原型构建非常有用。ActiveMQ是一个开源的消息代理,它遵循Java消息服务(JMS)规范,提供了高可靠性的...
ActiveMQ 是一个开源的消息中间件,它遵循Java消息服务(JMS)标准,为企业级应用程序提供高效率、可扩展和可靠的异步通信解决方案。在这个"ActiveMQ 教学视频/教程 /附带笔记等资源"的压缩包中,你将找到一系列关于...
### 消息队列Activemq学习笔记 #### MQ入门概述 消息队列(Message Queue,简称MQ)是一种用于在应用程序之间传递数据的机制。它允许应用之间通过发送消息进行通信,而无需直接调用对方。 ##### 前言:MQ=消息...
### Apache ActiveMQ 学习笔记 #### 一、ActiveMQ简介与安装 ##### 1.1 ActiveMQ概述 Apache ActiveMQ 是一个完全支持 JMS 1.1 和 J2EE 1.4 规范的消息服务器。它适用于 Java 消息服务 (JMS),并且是一个开源项目...
### ActiveMQ学习笔记知识点梳理 #### 一、ActiveMQ简介 **定义:** - **ActiveMQ**是由Apache出品的一款功能强大的开源消息中间件。作为消息队列(Message Queue,简称MQ)的一种,它主要用来在分布式系统之间...
**JMS学习笔记** Java消息服务(Java Message Service,简称JMS)是Java平台中用于在分布式环境中交换异步消息的标准API。它提供了一种在应用程序之间传递信息的方法,允许发送方和接收方无需同时在线即可进行通信...
ActiveMQ 是一款开源的消息中间件,由Apache基金会维护,它实现了Java消息服务(JMS)规范,为分布式系统提供了高效、可靠的异步消息传递。JMS是一种标准,它定义了Java应用程序如何与消息中间件交互,以实现点对点...
这份笔记由**邓建利**审核并批准,体现了作者对于J2EE架构的深入学习和研究,以及对英文文档学习障碍的克服,对于希望深入了解ActiveMQ及其在J2EE架构中应用的读者来说,是一份宝贵的资源。 总结而言,**ActiveMQ**...
2. **ActiveMQ学习笔记.doc**: 这可能是个人或社区成员编写的笔记,涵盖了ActiveMQ的基本概念、安装步骤、配置和使用技巧。笔记通常更注重实践操作,是初学者快速上手的好资料。 3. **ActiveMQ与Tomcat整合.doc**...