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