其实算不上初识了,工作一年来一直都有接触 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. 为大数据软件准备JAVA、Python环境

    环境:SUSE 11 64位 安装JAVA JDK 1.确定版本.一般都是安装最新的JDK(Java SE Development Kit).个别软件和系统需要特定版本的JDK,根据实际需要下载. 2 ...

  2. js小数处理

    js中的小数处理   先说说Math的几个方法: 1.Math.floor(x)   返回不大于当前数的最大整数. 我的记法:floor 直译 地板  也就是不大于的的意思 (x-0.5 四舍五入取整 ...

  3. 【算法系列学习】线段树 区间修改,区间求和 [kuangbin带你飞]专题七 线段树 C - A Simple Problem with Integers

    https://vjudge.net/contest/66989#problem/C #include<iostream> #include<cstdio> #include& ...

  4. CSS绘制简单图形

    究竟该用字体图标.图片图标.还是CSS画一个图标?我也不知道.各有千秋吧.本文将介绍如何用css绘制简单的图形,所有测试在chrome58.0完成,如果你不能得到正确结果请到caniuse查一查看看是 ...

  5. ASP.NET Core实现强类型Configuration读取配置数据

    前言 实现读取JSON文件几种方式,在项目中采取老办法简单粗暴,结果老大过来一看,恩,这样不太可取,行吧那我就用.NET Core中最新的方式诺,切记,适合的才是最好的,切勿懒. .NET Core读 ...

  6. AspNetCore-MVC实战系列(四)之结尾

    AspNetCore - MVC实战系列目录 . 爱留图网站诞生 . git源码:https://github.com/shenniubuxing3/LovePicture.Web . AspNetC ...

  7. SDN学习之Mininet验证OpenFlow协议版本

    最近学习如何使用mininet,但是,刚刚开始时一直无法知道如何查看OpenFlow协议的版本,通过查阅网上的资料,从SDNLAB中,学习到了如何验证,mininet自身基于OpenFlow13版本的 ...

  8. 55 Jump Game i && 45 Jump Game ii

    Jump Game Problem statement: Given an array of non-negative integers, you are initially positioned a ...

  9. ElasticSearch5在Ubuntu系统下的安装和Java调用

    ElasticSearch是开源搜索平台的新成员,实时数据分析的神器.可以理解为作为搜索的数据库,可以提供搜索功能.对比关系型数据库,具有以下的相似关系: 关系型数据库 数据库 表 行 列 Elast ...

  10. Linux下Oracle的启动和关闭

    默认情况下,Linux下Oracle是不会随系统自动启动的. 1.启动Oracle 1.以oracle账户登录到CentOS,或者切换到oracle用户权限 # su – oracle  2.然后输入 ...