下载地址 http://archive.apache.org/dist/activemq/
安装
注意:apache-activemq-5.11.3 后台管理有BUG
安装包 apache-activemq-5.11.4-bin.tar.gz 解压到指定目录,并重命名为activemq
查看activemq文件是否有执行权限
ll -a activemq/bin
如果没有执行权限,给文件添加执行权限
chmod 755 activemq/bin/activemq
ActiveMQ需要用到两个端口:一个是消息通讯的端口(默认为 61616),另一个是管理控制台端口( 默认为 8161) 。可自行按照下面的方式修改。
(可选)修改管理控制台端口,在 conf/jetty.xml 文件中配置
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<!-- the default port number for the web console -->
<property name="host" value="0.0.0.0"/>
<property name="port" value="8161"/>
</bean>
(可选)修改消息通讯的端口,在conf/activemq.xml 文件中配置
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
(可选)防火墙加入端口
启动activeMQ
./activemq start
查看启动情况
ps -aux |grep activemq
这货启动有点久,请稍等。当它启动完毕后,在浏览器输入 http://192.168.88.18:8161/ 可以进入它的管理控制台,默认账户和密码是admin、admin。里面可以监控消息队列的运转情况。
安全配置
安全配置分为管理后台的配置和JMS队列/主题的访问安全配置,其中后者最为重要,如果JMS队列/主题不加入访问限制的话,任何人只要知道消息服务地址(包括 ip,端口,消息地址),就可以任意往队列添加消息,这有可能造成系统的风险。
管理后台安全配置
开启控制台认证,编辑 activemq/conf/jetty.xml ,authenticate设置为true,默认情况下是打开的。
<bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint">
<property name="name" value="BASIC" />
<property name="roles" value="user,admin" />
<!-- set authenticate=false to disable login -->
<property name="authenticate" value="true" />
</bean>
修改控制台的登录密码。在activemq/conf/jetty-realm.properties文件中,修改内容,其中从左到右分别为用户名、密码和对应的角色。
# Defines users that can access the web (console, demo, etc.)
# username: password [,rolename ...]
admin: 123456, admin
重新启动activeMQ服务,使用新的账户和密码登录后台。
JMS的安全配置
对于JMS的安全配置分为两种,分别是JAAS身份验证和简单的账户密码认证,本文使用的是简单账户密码认证。下面介绍一下关于“队列/主题”的操作权限
- read:You can browse and consume from the destination
- write:You can send messages to the destination
- admin:You can lazily create the destination if it does not yet exist. This allows you fine grained control over which new destinations can be dynamically created in what part of the queue/topic hierarchy
开始配置吧。编辑conf/activemq.xml,在 **
<plugins>
<!-- Configure authentication; Username, passwords and groups -->
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="admin" password="123456" groups="users,admins"/>
</users>
</simpleAuthenticationPlugin>
</plugins>
这个配置定义了一个admin用户,密码是123456,角色是users,admins。接下来只有加入用户名和密码才可以使用MQ了,对于MQ的使用,会在后面的文章中介绍。
当在代码中获取连接启动连接的时候,如果账号密码不正确,会抛出异常
javax.jms.JMSSecurityException: User name [] or password is invalid.