其实算不上初识了,工作一年来一直都有接触 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 SupportConfiguration 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。不过例子大概给了一个套路。

发送时:

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

消费时:

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

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

初识 ActiveMQ的更多相关文章

  1. [ActiveMQ]初识ActiveMQ

    初识ActiveMQ ActiveMQ介绍 官方网站:http://activemq.apache.org/ 最新版本:ActiveMQ 5.14.1(2016-10-28) 最新版本下载链接:htt ...

  2. ActiveMQ (一) 初识ActiveMQ

    了解JMS JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进 ...

  3. 初识ActiveMQ

    消息中间件的初步认识 什么是消息中间件? 消息中间件是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,可以在分布式架构下扩展进程 ...

  4. ActiveMQ(1)---初识ActiveMQ

    消息中间件的初步认识 什么是消息中间件? 消息中间件是值利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,可以在分布式架构下扩展进 ...

  5. ActiveMQ学习笔记(1)----初识ActiveMQ

    1. 什么是ActiveMQ? ActiveMQ是Apache推出的,一款开源的,完全支持JMS1.1和j2ee1.4规范的JMS Provider实现的消息中间件(Message Oriented ...

  6. SpringBoot第二十篇:初识ActiveMQ

    本文是作者之前写的关于 ActiveMQ 的一篇文章.此处为了保证该系列文章的完整性,故此处重新引入. 一.消息中间件的介绍 介绍 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数 ...

  7. ActiveMQ 学习第二弹

    经历了昨天的初识 ActiveMQ,正好今天下班有点事耽搁了还没法回家,那就再学习会 ActiveMQ 吧!现在官网的文档没啥好看的了,毕竟是入门学习,太深奥的东西也理解不了.然后看官网上有推荐书籍& ...

  8. ActiveMQ消息的消费原理

    消费端消费消息: 在 初识ActiveMQ 中我提到过,两种方法可以接收消息,一种是使用同步阻塞的ActiveMQMessageConsumer#receive方法.另一种是使用消息监听器Messag ...

  9. ActiveMQ(2) ActiveMQ创建HelloWorld

    启动ActiveMQ: 请参见:ActiveMQ(1) 初识ActiveMQ 创建Maven工程: pom文件: <project xmlns="http://maven.apache ...

随机推荐

  1. time模块简介

    Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...

  2. 什么是Actor

    本文已.Net语法为主,同时写有Scala及Java实现代码 严肃的说,演员是一个广泛的概念,作为外行人我对Actor 模型的定义: Actor是一个系统中参与者的虚拟人物,Actor与Actor之间 ...

  3. linux网络编程(socket)之面向连接(TCP/IP)

    1.流程 服务器: 创建socket: 绑定端口: 监听: 监听到有连接请求,接受请求: 建立连接,开始对话. 客户端: 创建socket: 请求建立连接: 连接建立成功,开始对话. 2.实例代码 / ...

  4. GoldenGate实施步骤

    一.GoldenGate实施环境 source database:oracle 11.2.0.3 target  database:oracle 11.2.0.3 需要配置的进程如下: source ...

  5. html页面顶部出现一段空白,检查控制台发现body 下出现&#65279字符,原因及解决办法

    html页面顶部出现一段空白,检查控制台发现body 下出现&#65279字符,原因及解决办法 分析: 原来是页面编码时增加了BOM,此页面后端数据主要是PHP语言,对PHP来讲PHP在设计时 ...

  6. elasticsearch系列(三)分表分库

    首先ES没有库和表的概念,只有index,type,document(详细术语可以看ES的系列一 http://www.cnblogs.com/ulysses-you/p/6736926.html), ...

  7. asp.net Socket的简单Web Server

    1.首先初始化socket,包含对端点以及对连接队列长度的初始化 IPAddress address = IPAddress.Loopback; IPEndPoint endPoint = ); So ...

  8. [UWP]不怎么实用的Shape指南:自定义Shape

    1. 前言 这篇文章介绍了继承并自定义Shape的方法,不过,恐怕,事实上,100个xaml的程序员99个都不会用到.写出来是因为反正都学了,当作写个笔记. 通过这篇文章,你可以学到如下知识点: 自定 ...

  9. xargs命令详解

    xargs命令是把接收到的数据重新格式化,再将其作为参数提供给其他命令,下面介绍xargs命令的各种使用技巧 一.将多行输入转换成单行输入: [root@host1 test]# echo -e &q ...

  10. [Open Source] RabbitMQ 高可用集群方案

    简介 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模式.镜像模式 Rabb ...