window下安装Apache ActiveMQ Artemis消息队列, 搭建MQTT服务器

本文写在Artemis尚未迁移至ActiveMQ6.X的时间点

Artemis介绍

Apache ActiveMQ™是最流行的开源,多协议,基于Java的消息服务器。它支持行业标准协议,因此用户可以通过广泛的语言和平台选择。可以使用C,C ++,Python,.Net等连接。使用无处不在的AMQP协议集成您的多平台应用程序。使用STOMP通过websockets 在Web应用程序之间交换消息。使用MQTT管理您的IoT设备。支持您现有的JMS基础架构及其他。ActiveMQ提供强大的功能和灵活性,以支持任何消息传递用例。

ActiveMQ官网上目前有两种不同的ActiveMQ可供选择:

  1. “经典”的5.x Broker
  2. “下一代”的Artemis Broker。

一旦Artemis与5.x代码库达到足够的功能奇偶校验,Artemis最终将成为ActiveMQ 5.x的继承者,它将成为ActiveMQ 6.初始版本(参见可用迁移文档)。

ActiveMQ对比Artemis

ActiveMQ 5“经典” ActiveMQ Artemis
长期建立的,无限可插拔的架构,服务于多代应用程序。 用于下一代事件驱动的消息传递应用程序的高性能,非阻塞体系结构。
* JMS 1.1具有完整的客户端实现,包括JNDI * JMS 1.1和2.0,包括JNDI在内的完整客户端实现
* 使用共享存储的高可用性 * 使用共享存储或网络复制的高可用性
* 用于分配负载的“broker网络” * 简单而强大的协议无关寻址模型
* 熟悉的基于JMS的寻址模型 * 灵活的群集,用于分配负载
* 用于持久性的KahaDB和JDBC选项 * 用于低延迟持久性和JDBC的高级日志实现
* 使用共享存储的高可用性 * 与ActiveMQ 5实现高特性奇偶校验,以简化迁移

体系结构差异

虽然ActiveMQ与Artemis设计目的都是做同样的工作,但内部的工作方式却不同。下面在规划迁移时需要注意的一些最显着的体系结构差异。

在ActiveMQ中,我们有一些IO连接层的不同实现,如tcp(同步一个)和nio(非阻塞一个)。在Artemis中,IO层是使用Netty实现的,Netty是一个nio框架。这意味着不再需要在不同的实现之间进行选择,因为默认情况下使用非阻塞实现。

每个broker的另一个重要部分是消息存储。大多数ActiveMQ用户都熟悉KahaDB。它包括用于快速顺序存储消息(和其他命令包)的消息日志以及用于在需要时检索消息的索引。

Artemis有自己的消息存储。它仅包含仅附加消息日志。由于分页的完成方式不同,因此不需要消息索引。我们将在一分钟内详细讨论这个问题。在这一点上说这两个商店不可互换是很重要的,如果需要,必须仔细计划数据迁移。

分页差异是什么意思?分页是当代理无法将所有传入消息保存在其内存中时发生的过程。如何处理这种情况的策略在两个经纪人之间有所不同。ActiveMQ有游标,它基本上是准备分发给消费者的消息缓存。它会尝试将所有传入的消息保留在那里。当我们用完可用内存时,消息会添加到商店,但缓存会停止。当空间再次可用时,代理将通过批量从商店中提取消息来再次填充缓存。因此,我们需要在代理运行时期间不时读取日志。为此,我们需要维护日记索引,以便可以在日记中跟踪消息的位置。

Artemis在这方面(分页)的工作方式不同。整个消息日志保存在内存中,消息直接从它发送。当我们内存不足时,会在生产者端(在他们命中代理之前)分页消息。然后按照它们到达的顺序存储在顺序页面文件中。释放内存后,消息将从这些页面文件移动到日志中。通过这样的分页工作,仅在代理启动时才从文件日志中读取消息,以便重新创建该日志的内存中版本。在这种情况下,日记只是按顺序读取,这意味着不需要在日志中保留消息索引。

这是ActiveMQ 5.x和Artemis之间的主要区别之一。在早期了解它很重要,因为它会影响很多目标策略设置以及我们如何配置代理以便正确支持这些场景。

寻址差异

两者另一个很大的区别是消息寻址和路由的方式上。ActiveMQ最初是作为开源JMS实现开始的,因此其核心所有JMS概念(如队列,主题和持久订阅)都是作为一等公民实现的。这一切都基于项目中开发的OpenWire协议,甚至KahaDB消息存储都是以OpenWire为中心的。这意味着所有其他支持的协议(如MQTT和AMQP)都在内部转换为OpenWire。

Artemis采取了不同的方法。它仅在内部实现队列,并且通过使用地址将消息路由到适当的队列来实现所有其他消息传递概念。发布 - 订阅(主题)和点对点(队列)等消息传递概念是使用地址上不同类型的路由机制实现的。多播路由用于实现发布 - 订阅语义,其中特定地址的所有订户将获得其自己的内部队列,并且消息将被路由到所有订户。任播路由用于实现点对点语义,地址只有一个队列,所有消费者都会订阅它。寻址和路由方案用于所有协议。因此,例如,您可以将JMS主题视为多播地址。我们将在后面的文章中详细介绍这个主题。
(源于官网Google翻译)

发布/订阅代理服务器工作原理

该类代理服务器端(broker server), 会创建一个唯一订阅号,发送者可以向这个订阅号中发东西,然后接受者(即订阅该订阅号的接收方)都会收到来自该订阅号发出来的消息。以此来完成消息的推送。代理服务器其实是一个消息中转站。

windows下安装artemis

\color{red}{注意:ActiveMQ需要在JDK7以上的JDK支持,请确保已经正确安装JDK并正确配置环境变量}

下载解压

下载链接:https://activemq.apache.org/components/artemis/download/

image.png

下载后解压到:F:\ProfessionSoft\apache-artemis-2.9.0
image.png

至此,下载解压完成

创建broker实例

相比ActiveMQ,Artemis需要显示创建一个broker实例
新建一个文件夹:F:\ProfessionSoft\apache-artemis-2.9.0-myboker , 注意不要放在F:\ProfessionSoft\apache-artemis-2.9.0下

cd 进入F:\ProfessionSoft\apache-artemis-2.9.0\bin中, 执行下面指令(其中的F:\ProfessionSoft\apache-artemis-2.9.0-myboker就是创建的空文件夹,用于存放broker实例)

artemis create F:\ProfessionSoft\apache-artemis-2.9.0-myboker

按照提示输入账号(default username), 密码(default password), 并在Allow anonymous access?提示处执行Y
执行过程与最终结果:


image.png

至此broker实例创建完成

启动broker实例

进入到broker实例的bin目录下, 输入artemis run 回车即可启动


image.png

启动完成会有输出


image.png

注意需要保持CMD窗口不能关闭

访问http://localhost:8161/, 可以使用创建实例使用的账号密码登入Management Console

image.png

至此,Artemis实例已经启动完成,MQTT服务也已经可以连接

使用可视化图形客户端连接MQTT服务器

常用的客户端及下载链接

  1. mqtt.fx
  2. paho UI APP

paho UI app 使用与测试

image.png

mqtt.fx使用与测试

编辑连接


image.png

接收消息


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352