For long term persistence you may want to use a relational database as your persistent message store. Fuse Message Broker's default database when using the JDBC persistence adapter is Apache Derby. Fuse Message Broker also supports most major SQL databases. You can enable other databases by properly configuring the JDBC connection in the broker's configuration file.
You can use the JDBC persistence adapter either with or without journaling. Using the journal provides two main benefits. First, it improves the speed of the message store. Second, it provides support for JMS transactions.
Fuse Message Broker is known to work with the following databases:
Apache Derby
Axion
DB2
HSQL
Informix
MaxDB
MySQL
Oracle
Postgresql
SQLServer
Sybase
In addition, Fuse Message Broker supports a number of generic JDBC providers.
Fuse Message Broker support two types of JDBC store:
A journaled JDBC store:
The journaled JDBC store is specified using the
journaledJDBC
element inside thepersistenceFactory
element. For more details see Using JDBC with the High Performance Journal.A non-journaled JDBC store:
The non-journaled store is specified using the
jdbcPersistenceAdapter
element inside thepersistenceAdapter
element. For more details see Using JDBC without the Journal.
The journaled JDBC store features better performance than the plain JDBC store; but the journaled JDBC store is incompatible with the JDBC master/slave failover pattern—see JDBC Master/Slave in Clustering Guide.
Fuse Message Broker autodetects the JDBC driver that is in use at start-up. For the supported databases, the JDBC adapter automatically adjusts the SQL statements and JDBC driver methods to work with the driver. If you wish to customize the names of the database tables or work with an unsupported database, you can modify both the SQL statements and the JDBC driver methods. See Customizing the SQL statements used by the adapter for information about modifying the SQL statements. See Using generic JDBC providers for information about changing the JDBC methods.
Fuse Message Broker provides sample configurations of various JDBC databases in
.
Example 3.1 shows the configuration for
using the default JDBC database (Apache Derby).InstallDir
/conf/activemq-jdbc.xml
Example 3.1. Configuration for the Apache Derby Database
<beans ...> <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost"> ... <persistenceAdapter> <jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#derby-ds"/> </persistenceAdapter> ... </broker> <!-- Embedded Derby DataSource Sample Setup --> <bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource"> <property name="databaseName" value="derbydb"/> <property name="createDatabase" value="create"/> </bean> </beans>
Example 3.2 shows the configuration for
using the Oracle JDBC driver. The persistence adapter configuration refers to the
Spring bean
element that configures the JDBC driver.
Example 3.2. Configuration for the Oracle JDBC Driver
<beans ... > <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost"> ... <persistenceAdapter> <jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#oracle-ds"/> </persistenceAdapter> ... </broker> <!-- Oracle DataSource Sample Setup --> <bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:AMQDB"/> <property name="username" value="scott"/> <property name="password" value="tiger"/> <property name="maxActive" value="200"/> <property name="poolPreparedStatements" value="true"/> </bean> </beans>
The JDBC drivers are configured using a Spring bean
element. The id
attribute specifies the name by which
you will refer to the driver when configuring the JDBC persistence adapter. The class
attribute specifies the class that implements the
data source used to interface with the JDBC driver. The destroy-method
attribute specifies the name of the method to call when
the JDBC driver is shutdown.
In addition to the bean
element, the JDBC driver
configuration includes a number of property
elements.
Each property
element specifies a property required by
the JDBC driver. For information about the configurable properties refer to your
JDBC driver's documentation.