1
近期公司项目中,听同事提起MQ、JMS,因为之前没有使用过不太了解,所以抽出半天时间学习下,了解下相关概念、功能及其用途。便于再次与人沟通时可以言之有物,后续工作中遇到了,可立马上手,提高工作效率。
学习过程分为三个步骤:###
- 1 查找资料
- 2 实验实践
- 3 归纳总结
![](https://img.haomeiwen.com/i2199827/04f33bdc2f8e00d3.jpg)
2
查找资料###
推荐两篇博客,内容不错。
- 1 JMS(Java消息服务)入门教程 ,比较适合了解基本知识,包括概念、分类、用途及其原理。
- 2 消息队列MQ技术的介绍和原理,介绍了消息队列MQ的基本知识点。
此处不再对技术内容进行复制粘贴,仅提供学习思路。首先用what、how、why提出自己心中感兴趣的几个问题,然后在到资料中找出想要的答案。例如:什么是Java消息服务?MQ? 为什么要有消息服务?优点是什么?消息服务是如何实现的?
JSM Java Message Service, MQ Message Queue
3
实验####
通过上面的快速阅读和详细阅读之后,已经在概念上了解了,下面通过一个实验对概念和原理进行深入的理解,了解其用途及其适用范围。
- 1 环境介绍
apache-tomcat-7.0.61、apache-activemq-5.6.0、eclipse neon、jdk 1.8.0 ; - 2 实验代码工程链接地址
https://github.com/abshawn/JMSProject ,可以从此处下载代码,在本地部署查看效果。 -
3 实验效果截图
通过activemq可以监控到消息队列的内容。
ActiveMQ.jpg
![](https://img.haomeiwen.com/i2199827/882bc8be911b30f6.jpg)
![](https://img.haomeiwen.com/i2199827/e9d970824185b7c5.jpg)
4
归纳总结###
** JMS “ 一个中心,两种模式,三步实现”**
- 1 以 消息服务器为中心
消息生产者 通过客户端发消息给消息服务器; 消息消费者通过消息服务器接收消息; - 2 两种消息发送模型
两种消息发送模型规范:点对点、发布订阅 ; - 3 实现方法分为三步
3.1、 统一消息服务器,建立连接Connections ;
3.2 、通过连接建立队列会话session;
3.3 、准备就绪后,执行 生产者 发消息和消费者 接消息(异步)。
**优点 ** 解耦合、异步
友情提示
我是和奇谷朴,一个在帝都周末自己选择加班的有志好青年,读完我的文章如果有收获,记得打赏、关注和点赞哦!么么哒!!
网友评论
2. LZ写的很简单,实验环节还要先下载ActiveMQ,并启动ActiveMQ服务器才可以检测到消息队列,这个对老鸟来说是早就知道的东西,但是对于我们这种一次都没有接触过的菜鸟会有点懵逼。
1. javax.naming.NameNotFoundException: Name [queue/queue0] is not bound in this Context. Unable to find [queue].
这个错误的原因是未在tomcat/conf/context.xml中配置以下代码:
<Resource auth="Container" brokerName="LocalActiveMQBroker" brokerURL="tcp://localhost:61616" description="JMS Connection Factory" factory="org.apache.activemq.jndi.JNDIReferenceFactory" name="queue/connectionFactory" type="org.apache.activemq.ActiveMQConnectionFactory"/>
<Resource auth="Container" description="My Queue" factory="org.apache.activemq.jndi.JNDIReferenceFactory" name="queue/queue0" physicalName="TomcatQueue" type="org.apache.activemq.command.ActiveMQQueue"/>
2. javax.jms.JMSException: Could not connect to broker URL: tcp://localhost:61616. Reason: java.net.ConnectException: Connection refused: connect
Caused by: java.net.ConnectException: Connection refused: connect
这个保存可能是因为为安装activeMQ或安装完未启动(网上很多安装启动教程)
javax.jms.JMSException: Could not connect to broker URL: tcp://localhost:61616. Reason: java.net.ConnectException: Connection refused: connect
Caused by: java.net.ConnectException: Connection refused: connect