`
西北小强
  • 浏览: 344741 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • JMS
阅读更多

最近看公司的项目中用到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应用程序中查看到发送消息的相关信息。

  • 大小: 124.3 KB
  • 大小: 41.6 KB
  • 大小: 32.1 KB
  • 大小: 122.4 KB
  • 大小: 144.4 KB
分享到:
评论
4 楼 pan_1308 2016-01-23  
很是不错!
3 楼 zhenglu119 2014-01-24  
楼主,我安装你的方法,调不通啊。起producer的时候报错
javax.jms.JMSException: Could not connect to broker URL: tcp:localhost:61616. Reason: java.lang.IllegalArgumentException: port out of range:-1能帮我解答下么
2 楼 heyin12345 2013-09-10  
文字写的很好,谢谢分享。
但是要调通的话 要修改一下  String destinationName = "userId"; 名称为
String destinationName = "queue.msgText";
1 楼 yo8237233 2013-08-14  
这篇文章很用心 ,谢谢分享

相关推荐

    JMS学习笔记精心总结

    **JMS学习笔记精心总结** Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的一种标准接口。它允许应用程序创建、发送、接收和读取消息,使得应用程序能够在不直接连接的情况下...

    ActiveMQ学习笔记(二) JMS与Spring

    在本篇ActiveMQ学习笔记中,我们将探讨JMS(Java Message Service)与Spring框架的集成。JMS是一种标准API,用于在分布式环境中进行异步消息传递,而Spring框架则为开发人员提供了强大的依赖注入和管理服务的能力。...

    ActiveMQ学习笔记之一--ActiveMQ下载

    **ActiveMQ学习笔记之一——ActiveMQ下载** ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它是基于Java消息服务(JMS)规范的,用于在分布式系统中传递消息。作为一个高性能、可伸缩且可靠的解决方案,...

    activeMQ笔记

    ### ActiveMQ学习笔记知识点梳理 #### 一、ActiveMQ简介与消息传递机制 **ActiveMQ**是一款开源的消息中间件,支持多种消息传输协议,如AMQP、STOMP、MQTT等,广泛应用于分布式系统中进行消息传递。在ActiveMQ的...

    ActiveMQ学习笔记之九--发送消息到队列中

    这篇"ActiveMQ学习笔记之九--发送消息到队列中"主要探讨的是如何通过编程方式向ActiveMQ队列发送消息,这对于理解和应用消息中间件至关重要。 首先,我们要理解ActiveMQ中的队列(Queue)概念。队列是一种先进先出...

    jms学习笔记jms学习笔记

    本文主要探讨的是消息中间件(Message-Oriented Middleware,简称MOM),特别是在Java消息服务(Java Message Service,JMS)的学习笔记。 JMS是Java平台上的一个标准API,用于在分布式环境中进行异步消息传递。它...

    activemq系列笔记

    内容可能包括安装ActiveMQ、配置JMS连接、创建和管理队列与主题、调试和监控以及性能优化等方面。 4. **JMS简明教程** 这份教程可能提供了JMS基础概念的快速入门,包括消息类型(如TextMessage、ObjectMessage等...

    JMS相关,教程,例子,学习笔记

    通过阅读**jms学习笔记.docx** 和 **JMS例子.docx**,你可以深入理解JMS的使用方式,获取实践经验。而 **JMS教程.pdf** 和 **基于XML和JMS的异构数据交换集成的研究.pdf** 则提供了理论基础和高级应用场景的讲解,有...

    ActiveMQ学习笔记之四--启动嵌入式Broker(纯代码方式)

    在本篇ActiveMQ学习笔记中,我们将探讨如何通过纯代码方式启动一个嵌入式的Broker,这对于测试、开发或者快速原型构建非常有用。ActiveMQ是一个开源的消息代理,它遵循Java消息服务(JMS)规范,提供了高可靠性的...

    ActiveMQ 教学视频/教程 /附带笔记等资源

    ActiveMQ 是一个开源的消息中间件,它遵循Java消息服务(JMS)标准,为企业级应用程序提供高效率、可扩展和可靠的异步通信解决方案。在这个"ActiveMQ 教学视频/教程 /附带笔记等资源"的压缩包中,你将找到一系列关于...

    消息队列activemq学习笔记

    ### 消息队列Activemq学习笔记 #### MQ入门概述 消息队列(Message Queue,简称MQ)是一种用于在应用程序之间传递数据的机制。它允许应用之间通过发送消息进行通信,而无需直接调用对方。 ##### 前言:MQ=消息...

    Apache ActiveMQ学习笔记【原创:mq的方式有两种:点到点和发布/订阅】

    ### Apache ActiveMQ 学习笔记 #### 一、ActiveMQ简介与安装 ##### 1.1 ActiveMQ概述 Apache ActiveMQ 是一个完全支持 JMS 1.1 和 J2EE 1.4 规范的消息服务器。它适用于 Java 消息服务 (JMS),并且是一个开源项目...

    active mq 学习笔记

    ### ActiveMQ学习笔记知识点梳理 #### 一、ActiveMQ简介 **定义:** - **ActiveMQ**是由Apache出品的一款功能强大的开源消息中间件。作为消息队列(Message Queue,简称MQ)的一种,它主要用来在分布式系统之间...

    JMS学习笔记

    **JMS学习笔记** Java消息服务(Java Message Service,简称JMS)是Java平台中用于在分布式环境中交换异步消息的标准API。它提供了一种在应用程序之间传递信息的方法,允许发送方和接收方无需同时在线即可进行通信...

    ActiveMQ+In+Action学习笔记.docx

    ActiveMQ 是一款开源的消息中间件,由Apache基金会维护,它实现了Java消息服务(JMS)规范,为分布式系统提供了高效、可靠的异步消息传递。JMS是一种标准,它定义了Java应用程序如何与消息中间件交互,以实现点对点...

    ActiveMQ In Action翻译笔记-更新版2011

    这份笔记由**邓建利**审核并批准,体现了作者对于J2EE架构的深入学习和研究,以及对英文文档学习障碍的克服,对于希望深入了解ActiveMQ及其在J2EE架构中应用的读者来说,是一份宝贵的资源。 总结而言,**ActiveMQ**...

    分享一些ActiveMQ的资料

    2. **ActiveMQ学习笔记.doc**: 这可能是个人或社区成员编写的笔记,涵盖了ActiveMQ的基本概念、安装步骤、配置和使用技巧。笔记通常更注重实践操作,是初学者快速上手的好资料。 3. **ActiveMQ与Tomcat整合.doc**...

Global site tag (gtag.js) - Google Analytics