初识 ActiveMQ
其实算不上初识了,工作一年来一直都有接触 mq 相关的东西。但是,从来都是粘贴复制别人的配置代码,却从未认真系统的学习过它,现在线上用 mq 的项目出问题了,老板在后面拿枪指着呢,不得不好好研究下了。
安装
说干就干,先到官网下载 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 Support 和 Configuration section。我的项目就是用的 spring,以前配置都是抄别人的,现在终于可以看看官方指南了,先把这两个链接收藏起来等下都看了。从这里我也明白了,使用 activemq console
启动的话,就可以一直在当前终端里看启动和运行日志了。好了,现在我特别想去看看
Hello World 了。
Hello World
开头说运行完这个例子后,可以做什么什么。。。尼玛,一共五道作业题,我就能看明白最后一道:使用 Topic 代替 Queue,之前我还是稍微明白一点主题和队列的概念的。不管作业了,先去看看现成的例子吧!
自己在 IDEA 里面抄袭了下例子,发现有些 ActiveMQConnectionFactory 类,不是 Java 原生类,刚才最顶端看到了 Initial Configuration guide 来设置 classpath,想必就是教我们怎么把 ActiveMQ 相关的 jar 包导入项目吧!去这个页面看了一下,说有个叫 activemq-all.jar 的全功能包,但是没给下载连接,没办法谷歌一下喽,然后找到了伟大的 Maven 官方仓库,然后找到了跟我安装版本一直的 jar 包,然后下载它,并加入到项目 path 中去。
好了,现在可以愉快地抄例子代码了。
例子抄完了,运行了两边,一知半解的,消息好像是被保存在了项目根目录的 KahaDB 的文件夹下去了,并没有 保存到 ActiveMQ 服务器中,反正我在 localhost:8161 上没看到相关的 Queue。不过例子大概给了一个套路。
发送时:
- 创建连接工厂
- 使用连接工厂创建连接(奇怪,不是应该从连接工厂中获取连接的吗?)
- 启动连接
- 使用连接创建会话
- 使用会话创建地址(队列或主题地址。队列或主题为啥要依据会话创建呢?这两者之间有关系吗?不明白,不明白)
- 使用会话和地址创建消息生产者
- 设置消息生产者的分发消息的模式
- 使用会话创建一个文本消息(奇怪,消息这种独立的实体,为啥要依据会话创建呢?不明白,不明白)
- 使用生产者发送消息
- 关闭会话
- 关闭连接
消费时:
- 创建连接工厂
- 使用连接工厂创建连接(奇怪,不是应该从连接工厂中获取连接的吗?)
- 启动连接
- 使用连接创建会话
- 使用会话创建地址(队列或主题地址。队列或主题为啥要依据会话创建呢?这两者之间有关系吗?不明白,不明白)
- 使用会话和地址创建消息消费者
- 消费者接收消息(可以设置一定的超时时间)
- 关闭消费者(为啥消费者还需要关闭??生产者咋不需要关闭呢?)
- 关闭会话
- 关闭连接
看了那么久,稍微有点了解吧!今天先这样吧,回家吃饭了!
初识 ActiveMQ的更多相关文章
- [ActiveMQ]初识ActiveMQ
初识ActiveMQ ActiveMQ介绍 官方网站:http://activemq.apache.org/ 最新版本:ActiveMQ 5.14.1(2016-10-28) 最新版本下载链接:htt ...
- ActiveMQ (一) 初识ActiveMQ
了解JMS JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进 ...
- 初识ActiveMQ
消息中间件的初步认识 什么是消息中间件? 消息中间件是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,可以在分布式架构下扩展进程 ...
- ActiveMQ(1)---初识ActiveMQ
消息中间件的初步认识 什么是消息中间件? 消息中间件是值利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,可以在分布式架构下扩展进 ...
- ActiveMQ学习笔记(1)----初识ActiveMQ
1. 什么是ActiveMQ? ActiveMQ是Apache推出的,一款开源的,完全支持JMS1.1和j2ee1.4规范的JMS Provider实现的消息中间件(Message Oriented ...
- SpringBoot第二十篇:初识ActiveMQ
本文是作者之前写的关于 ActiveMQ 的一篇文章.此处为了保证该系列文章的完整性,故此处重新引入. 一.消息中间件的介绍 介绍 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数 ...
- ActiveMQ 学习第二弹
经历了昨天的初识 ActiveMQ,正好今天下班有点事耽搁了还没法回家,那就再学习会 ActiveMQ 吧!现在官网的文档没啥好看的了,毕竟是入门学习,太深奥的东西也理解不了.然后看官网上有推荐书籍& ...
- ActiveMQ消息的消费原理
消费端消费消息: 在 初识ActiveMQ 中我提到过,两种方法可以接收消息,一种是使用同步阻塞的ActiveMQMessageConsumer#receive方法.另一种是使用消息监听器Messag ...
- ActiveMQ(2) ActiveMQ创建HelloWorld
启动ActiveMQ: 请参见:ActiveMQ(1) 初识ActiveMQ 创建Maven工程: pom文件: <project xmlns="http://maven.apache ...
随机推荐
- 一个 Vue + Node + MongoDB 博客系统
源码 耗时半载(半个月)的大项目终于完成了.这是一个博客系统,使用 Vue 做前端框架,Node + express 做后端,数据库使用的是 MongoDB.实现了用户注册.用户登录.博客管理(文章的 ...
- linux 中的搜索命令
which 查看可执行文件的位置. whereis 查看文件位置. locate 配合数据库查看文件位置. find 实际搜索硬盘查询文件名称. grep 查找文件内容 一般不常用find命令,因为f ...
- PHP 安装 Xdebug 扩展(一)
一.前言 1. Xdebug 简介 Xdebug 是一个开放源代码的 PHP 程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况.当前最新版本为 Xdebug 2.5.0 ...
- Express - 入门
Express入门篇 1.HelloWorld 根目录新建server.js文件,插入代码: var express = require('express'); var app = express( ...
- asp.net 母版-页脚制作
1.母版创建流程略过. 2.创建母版页css:Site.css body { } .linkButton{ text-decoration:none; color:whitesmoke; } 3.母版 ...
- NancyFx 2.0的开源框架的使用-Authentication
新建一个空的项目 新建好了空的项目以后,接着通过NuGet安装一下三个包 Nancy Nancy.Hosting.Aspnet Nancy.ViewEnglines.Razor 然后在项目中添加Mod ...
- Java中File
1.什么是流? Java中的流是个抽象的概念,当程序需要从某个数据源读入数据的时候,就会开启一个数据流,数据源可以是文件.内存或网络等等.2.使用File类操作文件或目录属性 public class ...
- 基于express+mongodb+pug的博客系统——pug篇
很久之前就想自己搭一个博客了,最开始用hexo+github,但是换电脑后总是有些麻烦.后来使用WordPress,但是用WordPress总觉得没什么技术含量,前后端都是人家写好的,而且买的垃圾虚拟 ...
- 1.centOS安装Mysql
上个星期研究了一个星期的Mysql,从今天起把学到的东西整理一下. ---------------------------------------------- mysql安装本人亲试过两种安装方式, ...
- 最近项目用到Dubbo框架,分享一下~
1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...