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 License 2.0 授權。