JDBC 支持
我们支持各种用于消息持久化的 SQL 数据库,例如
以及一些通用的 JDBC 提供程序。
自动发现您的 JDBC 提供程序
我们尝试通过这些 配置文件 和 JDBC 驱动程序的返回值来自动检测使用哪个 JDBCAdapter。
如果您有一个我们不支持的 JDBC 数据库,请告诉我们您正在使用的 JDBC 驱动程序字符串,并 给我们留言 或在我们的 支持数据库 中提出问题,我们会尽快解决它。
如果您的数据库不在上面的列表中,通常只需调整 StatementProvider 以确保 JDBCMessageStore 使用正确的 SQL 语言版本。因此,大多数数据库通常支持以下其中一种提供程序...
- org.activemq.store.jdbc.adapter.BlobJDBCAdapter
- org.activemq.store.jdbc.adapter.BytesJDBCAdapter
- org.activemq.store.jdbc.adapter.DefaultJDBCAdapter
- org.activemq.store.jdbc.adapter.ImageJDBCAdapter
您可以使用其 xbean 标识符在 activemq.xml 中显式指定 JDBC 适配器...
<jdbcPersistenceAdapter adapter="postgresql-jdbc-adapter"/>
自定义 SQL DDL
您可以使用 statements 元素配置各种 SQL 数据类型 - 例如列大小等
<broker useJmx="false">
<persistenceAdapter>
<journaledJDBC useJournal="false">
<statements>
<statements stringIdDataType ="VARCHAR(128)"/>
</statements>
</journaledJDBC>
</persistenceAdapter>
</broker>
有关可以在 statements 元素上设置的属性的更多信息,请参见 Statements 类。所有可设置的 Bean 属性都可以用作
使用 MySQL
如果您使用的是 MySQL,则应将 **relaxAutoCommit** 标志设置为 true。例如
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
要查看实际情况,请参见 默认配置文件
对于 AMQ 3.x
在 3.x 中,您可以按如下方式指定适配器
<jdbcPersistence adapterClass="org.activemq.store.jdbc.adapter.ImageBasedJDBCAdaptor">
...
</jdbcPersistence>