安装了activemq,然后要配置成数据库持久化的。

参考文档:

这是个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的邮件列表里找到答案:

 

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就好了。