ActiveMQ企业应用

环 境: CentOS 6.5、 JDK7、 ActiveMQ:5.14.3、 MySQL:5.5.32

从官网下载安装包:

http://activemq.apache.org/activemq-5143-release.html

$ tar -zxvf apache-activemq-5.11.1-bin.tar.gz
$ mv apache-activemq-5.11.1 activemq

如果启动脚本 activemq 没有可执行权限,此时则需要授权(此步可选)

$ cd /home/wusc/activemq-01/bin/
$ chmod 755 ./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>

启动

$activemq/bin/activemq start 

tcp        0      0 ::ffff:192.168.1.57:8161    :::*                        LISTEN      12235/java          
tcp        0      0 :::61616                    :::*                        LISTEN      12235/java

安全配置

默认密码是: admin/admin

ActiveMQ 如果不加入安全机制的话,任何人只要知道消息服务的具体地址(包括 ip,端口,消息地址 [队列或者主题地址],),都可以肆无忌惮的发送、接收消息。关于 ActiveMQ 安装配置 http://activemq.apache.org/security.html,以简单授权配置为例:

conf/activemq.xml
<plugins>
    <simpleAuthenticationPlugin>
        <users>
    <authenticationUser username="test" password="test123" groups="user"/>
    </users>
</simpleAuthenticationPlugin>
</plugins>

定义了一个 test 用户,密码为 test123,角色为 users

修改密码在conf/jetty-realm.properties中:

admin: admin123, admin
users:test123,test
角色      密码      用户名

ActiveMQ-JDBC

编辑activemq.xml配置文件

 <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" useJmx="true"  >

使用jmx做监控

        <!--
    <persistenceAdapter>
        <kahaDB directory="${activemq.data}/kahadb"/>
    </persistenceAdapter>
        -->
    <persistenceAdapter>
        <jdbcPersistenceAdapter  dataSource="#MySQL-DS" createTablesOnStartup="true" useDatabaseLock="true"  />
    </persistenceAdapter>

禁止默认的kaha,使用MySQL进行持久化

    <plugins>
        <!-- 将所有消息的传输模式,修改为"PERSISTENT" -->
    <forcePersistencyModeBrokerPlugin persistenceFlag="true"/>
    </plugins>
</broker>

强制使用持久化策略,这里在做主从同步的时候为了避免丢掉数据使用

<bean id="MySQL-DS" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://192.168.1.57:3306/activemq?relaxAutoCommit=true" />
    <property name="username" value="root"/>
    <property name="password" value="******"/>
    <property name="poolPreparedStatements" value="true"/>  
</bean>

注意事项

  1. 网上有很多老版本用的是dbcp,其实不知道从什么时候开始已经开始是dbcp2了,我在测试5.11版本的时候还是dbcp,貌似就是从最近几个版本开始升级的dbcp2,如果显示不能连接的话就改成dbcp2,
  2. jar包版本:mysql-connector-java-5.1.16-bin.jar,jar包不能太低,最开始尝试的是5.1.6报错:OPTION SQLSELECTLIMIT=10包含了mysql关键字。
  3. mysql://192.168.1.57:3306/ 这个地址最好是写本机的IP地址,不要localhost和127.0.0.1,我在做实验的时候报错不能创建数据库。
  4. createTablesOnStartup=”true” 这个选项有很多博客都是 “false”,如果改成false的话,那些博客大神都是怎么创建数据库的表的,难道自己创建的嘛?
  5. 数据库的库字符集尽量改为 latin1 ,否则会在 ACTIVEMQ_ACKS 这个表创建的时候报错,提示你无法创建。
  6. MySQL用户创建,允许本地ip访问。
  7. 需要在host文件中对配置文件的IP做解析,如果不做解析,再启动的时候会报错。

博客参考:http://m.blog.csdn.net/article/details?id=51859638

 

One thought on “ActiveMQ企业应用

发表评论