下载
官网:https://activemq.apache.org/components/artemis/
我选择的版本:ActiveMQ Artemis 2.9.0 (June 6, 2019)
http://mirror.bit.edu.cn/apache/activemq/activemq-artemis/2.9.0/apache-artemis-2.9.0-bin.tar.gz
安装
#解压到/opt目录下
sudo tar -zxvf apache-artemis-2.9.0-bin.tar.gz -C /opt/
Artemis 的目录结构
|___ bin #运行ActiveMQ Artemis所需的二进制文件和脚本
|
|___ examples #所有的示例都放在这个目录下
| |___ common
| |___ features
| |___ perf
| |___ protocols
|
|___ lib #运行ActiveMQ Artemis所需的jar和库
| |___ client
|
|___ schema #存放用于验证ActiveMQ Artemis的XML配置文件
|
|___ web #代理运行时加载web上下文的文件夹
|___ api #API文档
|___ hacking-guide
|___ migration-guide
|___ user-manual #用户手册
创建Broker实例
Broker实例是包含与Broker进程关联的所有配置和运行时数据(如日志和数据文件)的目录。
官网文档建议我们不要在${ARTEMIS_HOME}下创建实例目录。鼓励这种分离,以便在ActiveMQ Artemis的下一个版本发布时更容易升级。
cd /var/lib/
/opt/apache-artemis-2.9.0/bin/artemis create mybroker
然后控制台会让我们填写默认用户名、密码、是否允许匿名登录
我们会看到,在/var/lib目录下,为我们生成了mybroker目录,按照官方文档,我们看一下实例下的几个主要目录
├── bin #保存与此实例关联的执行脚本
├── data #保存用于存储持久消息的数据文件
├── etc #保存实例配置文件
├── lib
├── lock
├── log #保存旋转日志文件
└── tmp #保存可以在代理运行期间安全删除的临时文件
启动和停止实例
我们看到在控制台已经提示我们
您现在可以通过执行以下命令启动代理:
"/var/lib/mybroker/bin/artemis" run
或者您可以使用以下命令在后台运行代理:
"/var/lib/mybroker/bin/artemis-service" start
我们使用后台运行执行下
/var/lib/mybroker/bin/artemis-service start
看到控制台输出,启动成功
Starting artemis-service
artemis-service is now running (64858)
访问控制台
根据官方文档所述,我们可以通过使用浏览器访问URL http://localhost:8161/console 来使用控制台.
这里埋了个坑,我使用http://<服务器IP>:8161/console的URL地址确无法访问... 看了一下官方文档,原来是这样:
大概的意思是说:Jolokia JMX-HTTP桥接是通过代理配置目录中的策略文件“etc/Jolokia -access.xml”来保护的。该文件的内容应该按照Jolokia安全指南中的描述进行修改。默认情况下,控制台被锁定为“localhost”,在通过网络公开控制台web端点时,要特别注意“CORS”限制。
好的,我们来netstat看一下是不是这个问题造成的
netstat -anpt |grep 64858
控制台如下,原来如此,找到原因了!
1)修改 etc/Jolokia -access.xml,添加一条allow-origin的访问权限设置
参考Jolokia 文档 https://jolokia.org/reference/html/security.html#d0e2905
<restrict>
<cors>
<!-- Allow cross origin access from localhost ... -->
<allow-origin>*://localhost*</allow-origin>
<allow-origin>*://192.168.20.65*</allow-origin>
<!-- Options from this point on are auto-generated by Create.java from the Artemis CLI -->
<!-- Check for the proper origin on the server side, too -->
<strict-checking/>
</cors>
</restrict>
2)修改etc/bootstrap.xm,localhost改为服务器的ip
<broker xmlns="http://activemq.org/schema">
<jaas-security domain="activemq"/>
<!-- artemis.URI.instance is parsed from artemis.instance by the CLI startup.
This is to avoid situations where you could have spaces or special characters on this URI -->
<server configuration="file:/var/lib/mybroker/etc//broker.xml"/>
<!-- The web server is only bound to localhost by default -->
<web bind="http://192.168.20.65:8161" path="web">
<app url="activemq-branding" war="activemq-branding.war"/>
<app url="artemis-plugin" war="artemis-plugin.war"/>
<app url="console" war="console.war"/>
</web>
</broker>
3)重启一下broker实例
/var/lib/mybroker/bin/artemis-service restart
我们再来netstat看一下
然后我们在浏览器中尝试下,发现成功了,好开心呀,有木有!