安装了activemq,然后要配置成数据库持久化的。
参考文档:
http://activemq.apache.org/persistence.html
这是个pdf教程,比较详细:
http://open.iona.com/docs/broker/5.0/persistence/persistence.pdf
启动之后报错:
java.io.IOException: Failed to get last broker message id:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'activemq.activemq_acks' doesn't exist
按道理数据表会在启动的时候自动创建。因为journaledJDBC有个属性createTablesOnStartup默认是true。并且查看了一下数据库,有两个表:
ACTIVEMQ_LOCK
ACTIVEMQ_MSGS
已经创建了,就是ACTIVEMQ_ACKS没有创建。
搜索了一下,在activemq的邮件列表里找到答案:
http://www.mail-archive.com/users@activemq.apache.org/msg03698.html
Specified key was too long; max key length is 1000 bytes is the error not
allowing the creation of ACTIVEMQ_ACKS
You are probably using utf8/some other multibyte encoding as the collation
in your database....
Switch it to latin1 or ASCII... The varchar fields that the key is composed
of add up to less than 1000 characters but with a multibyte encoding the key
length is over 1000 bytes.
我创建activemq数据库的时候用的character-set是utf-8.把character-set改成latin1就好了。