JDBC 支持

功能 > 持久化 > JDBC 支持

我们支持各种用于消息持久化的 SQL 数据库,例如

  • Apache Derby
  • Axion
  • DB2
  • HSQL
  • Informix
  • MaxDB
  • MySQL
  • Oracle
  • Postgresql
  • SQLServer
  • Sybase

以及一些通用的 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>

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛标志和 Apache ActiveMQ 项目标志是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 许可。