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>