关于 ActiveMQ

别说谁变了你拦得住时间么 提交于 2020-03-27 04:03:37

今天玩了下 ActiveMQ,希望实现服务器的消息可以通知到各个客户终端。

安装:

1、安装 ActiveMQ 之前必须安装 Java 的 jdk , 可以从此下载:   http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2、安装完 jdk 后,必须重新设置下环境变量,主要几个:

     1)创建环境变量:JAVA_HOME, 值是 jdk 的安装路径,例如:C:\Program Files\Java\jdk1.8.0_91

     2)创建环境变量:classpath , 值是   .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar    这是为了在开发时能找到可用的包

     3)设置 path, 增加安装路径下的 bin 目录,例如: C:\Program Files\Java\jdk1.8.0_91\bin

3、然后到 ActiveMQ 的解压目录下的 bin 下,用 dos 下运行,或者做个批处理: activemq start

     有两种启动方式,还有一种 activemq console

     ps: 老版本只需要直接运行 activemq.bat 就可以, 不带参, 我用的是最新的 ActiveMQ 5.13.3 Release

4、运行后,可以直接用 运行服务器地址的 8161 端口验证, 例如: http://127.0.0.1:8161  , 默认登录密码是 admin / admin .   注意通过 conf/jetty-realm.properties 修改登录用户名和密码. conf/jetty.xml 修改 8161 端口

5、ActiveMQ 启动后,默认的连接端口是  81816, 连接没有安全认证,就是说知道 ip 和端口就可以连上去

 

认证配置:

安全认证目前知道有两种,一种简单的方式:

在conf/activemq.xml文件中加入以下内容即可:

<plugins>
<!-- Configure authentication; Username, passwords and groups -->
<simpleAuthenticationPlugin>
<users>
    <authenticationUser username="system" password="${activemq.password}"   groups="users,admins"/>
    <authenticationUser username="user" password="${guest.password}"  groups="users"/>
    <authenticationUser username="guest" password="${guest.password}" groups="guests"/>
</users>
</simpleAuthenticationPlugin>
</plugins>

此方法配置中的占位符的值可在conf/credentials.properties 设置

 

注意:按照官网资料http://activemq.apache.org/xml-reference.html  

 

【To avoid this XML validation error in ActiveMQ 5.4/5.5, simply change the ordering of the XML elements so that they are in alphabetical order。】此配置文件中是按英文字母顺序排列。所以<plugins><plugins/>必须放在<systemUsage>与<managementContext>之间

 

groups.propert  文件定义了组下面的用户。users.properties 文件定义了用户名对应的密码

 

还有一种方法看似更高级,没有尝试:

在conf/activemq.xml文件中加上

<plugins>
    <!--use JAAS to authenticate using the login.config file on the classpath to configure JAAS -->
    <jaasAuthenticationPlugin configuration="activemq-domain" />
    <!--  lets configure a destination based authorization mechanism -->
    <authorizationPlugin>
        <map>
            <authorizationMap>
                <authorizationEntries>

                <!-->表示通配符,例如USERS.>表示以USERS.开头的主题,>表示所有主题,read表示读的权限,write表示写的权限,admin表示角色组-->
                    <authorizationEntry queue=">" read="admins" write="admins" admin="admins" />
                    <authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
                    <authorizationEntry queue="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins" />
                    <authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins" />
                </authorizationEntries>
            </authorizationMap>
        </map>
    </authorizationPlugin>
</plugins>

 

b)在conf目录下增加login.config,groups.properties,users.properties

 

login.config 内容如下:

 

activemq-domain {
        org.apache.activemq.jaas.PropertiesLoginModule required
        debug=true
        org.apache.activemq.jaas.properties.user="users.properties"
        org.apache.activemq.jaas.properties.group="groups.properties";
    };

 

groups.properties  内容如下:

 

    #group=userName
   admins=system

users.properties  内容如下:

   #userName=password
   system=manager

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!