初识 ActiveMQ

其实算不上初识了,工做一年来一直都有接触 mq 相关的东西。可是,历来都是粘贴复制别人的配置代码,却从未认真系统的学习过它,如今线上用 mq 的项目出问题了,老板在后面拿枪指着呢,不得很差好研究下了。html

安装

说干就干,先到官网下载 ActiveMQ 安装到本地。若是用 Mac 的化就方便了,直接在终端:brew install activemq,而后根据安装后的提示直接输入:activemq start 启动它,执行启动命令后输出了四行日志,而后就完了!记得以前见过有个网站能够查看 ActiveMQ 的 Queue,Topic,以及一些消息堆积数等数据的,但是启动日志并无告诉我怎么打开这样的网站。没办法,去官网看文档吧!
如今来到了官网,大眼一瞅,发现右下方的菜单栏里面有个 Using ActiveMQ 5。无须多言,这应该就是咱们要找的文档了,先看了再说。
打开这个文档页面,看到了程序员们很是熟悉的 Examples,Getting Started,Hello World 字样。那么就先从 Getting Started 来看吧!程序员

Getting Started

首先是,文档的自我说明:本文档介绍了怎么在 Unix 和 Windows 平台上安装和配置 ActiveMQ。
而后是,安装条件:大概就是须要几十或几百兆的硬盘空间啊,须要先安装 Java,Maven 啊,基本是 Java 菜鸟都能看懂的东西了。
紧接着就是怎么在不一样的平台上安装和启动了,刚才在 Mac 上直接用 brew 安装和启动了,这也不废话了!
启动完了,而后又提示咱们检测下是否启动成功了,直接检测 ActiveMQ 监听的 61616 端口有没有被监听便可:netstat -an | grep 61616
而后说监控 ActiveMQ 的状态,在这里终于找到了咱们须要的查看 ActiveMQ 各项数据的地址:http://localhost:8161/admin,在浏览器中打开 此地址
就像学开车同样,不能只学打开火让车飞快地跑起来,还应该学会如何安全的让车停下来。找到 ActiveMQ 的安装目录,进入 bin 文件夹后执行:activemq stop。由此能够,刚才使用 brew 安装时,brew 必是把 bin 目录下的 activemq 这个脚本作成了全局可执行命令,因此使用 activemq start 能够直接启动呢!不用多说,如今我直接在当前目录也可让车停下来:activemq stop,试了一下,确实停下来了!
而后是怎么使用不一样的配置,这里我发现说的有两种状况:ActiveMQ 5.8 or older 和 activeMQ 5.9,而后我就查看了下我安装的版本,activemq: stable 5.14.4,尼玛,差距有点大啊!难道文档版本落后那么多?哎,先无论了,等下不行的话再从新安装最新版吧!这里介绍了这两种状况怎么使用其余配置而不是默认配置文件来启动 ActiveMQ,而后我还看到了 Spring SupportConfiguration section。个人项目就是用的 spring,之前配置都是抄别人的,如今终于能够看看官方指南了,先把这两个连接收藏起来等下都看了。从这里我也明白了,使用 activemq console 启动的话,就能够一直在当前终端里看启动和运行日志了。好了,如今我特别想去看看
Hello World 了。spring

Hello World

开头说运行完这个例子后,能够作什么什么。。。尼玛,一共五道做业题,我就能看明白最后一道:使用 Topic 代替 Queue,以前我仍是稍微明白一点主题和队列的概念的。无论做业了,先去看看现成的例子吧!
本身在 IDEA 里面抄袭了下例子,发现有些 ActiveMQConnectionFactory 类,不是 Java 原生类,刚才最顶端看到了 Initial Configuration guide 来设置 classpath,想必就是教咱们怎么把 ActiveMQ 相关的 jar 包导入项目吧!去这个页面看了一下,说有个叫 activemq-all.jar 的全功能包,可是没给下载链接,没办法谷歌一下喽,而后找到了伟大的 Maven 官方仓库,而后找到了跟我安装版本一直的 jar 包,而后下载它,并加入到项目 path 中去。
好了,如今能够愉快地抄例子代码了。
例子抄完了,运行了两边,只知其一;不知其二的,消息好像是被保存在了项目根目录的 KahaDB 的文件夹下去了,并无 保存到 ActiveMQ 服务器中,反正我在 localhost:8161 上没看到相关的 Queue。不过例子大概给了一个套路。
发送时:apache

  1. 建立链接工厂
  2. 使用链接工厂建立链接(奇怪,不是应该从链接工厂中获取链接的吗?)
  3. 启动链接
  4. 使用链接建立会话
  5. 使用会话建立地址(队列或主题地址。队列或主题为啥要依据会话建立呢?这二者之间有关系吗?不明白,不明白)
  6. 使用会话和地址建立消息生产者
  7. 设置消息生产者的分发消息的模式
  8. 使用会话建立一个文本消息(奇怪,消息这种独立的实体,为啥要依据会话建立呢?不明白,不明白)
  9. 使用生产者发送消息
  10. 关闭会话
  11. 关闭链接

消费时:浏览器

  1. 建立链接工厂
  2. 使用链接工厂建立链接(奇怪,不是应该从链接工厂中获取链接的吗?)
  3. 启动链接
  4. 使用链接建立会话
  5. 使用会话建立地址(队列或主题地址。队列或主题为啥要依据会话建立呢?这二者之间有关系吗?不明白,不明白)
  6. 使用会话和地址建立消息消费者
  7. 消费者接收消息(能够设置必定的超时时间)
  8. 关闭消费者(为啥消费者还须要关闭??生产者咋不须要关闭呢?)
  9. 关闭会话
  10. 关闭链接

看了那么久,稍微有点了解吧!今天先这样吧,回家吃饭了!安全

相关文章
相关标签/搜索