可以不使用基于文件的持久性,而将代理设置为访问可通过 JDBC 驱动程序进行访问的任何数据存储库。 这需要设置适当的与 JDBC 相关的代理配置属性,以及使用数据库管理器实用程序 (imqdbmgr) 创建具有正确结构的数据库。有关详细信息,请参见配置基于 JDBC 的存储库。
基于 JDBC 的持久性中列出了用于将代理配置为使用 JDBC 数据库的属性。可以在每个代理实例的实例配置文件 (config.properties ) 中指定这些属性,也可以使用代理实用程序 (imqbrokerd) 或数据库管理器实用程序 (imqdbmgr) 的 -D 命令行选项来指定这些属性。
imq.persist.jdbc.driver 属性提供了连接到数据库时使用的 JDBC 驱动程序的 Java 类名。 还有一些属性用于指定具有以下功能的 URL:连接到现有数据库 (imq.persist.jdbc.opendburl)、创建新的数据库 (imq.persist.jdbc.createdburl) 和关闭数据库连接 (imq.persist.jdbc.closedburl)。
imq.persist.jdbc.user 和 imq.persist.jdbc.password 属性提供了用于访问数据库的用户名和密码;imq.persist.jdbc.needpassword 是用于指定是否需要密码的布尔标志。 为了安全起见,应该仅在通过 -passfile 命令行选项指定的密码文件中指定密码;如果未指定此类密码文件,则 imqbrokerd 和 imqdbmgr 命令将以交互方式提示您指定密码。 同样,可以通过在命令行中使用 imqbrokerd 命令的 -dbuser 选项或 imqdbmgr 命令的 -u 选项来提供用户名。
在由多个代理实例共享的 JDBC 数据库中,配置属性 imq.persist.jdbc.brokerid 指定每个实例的唯一实例标识符,该标识符将被附加到数据库表名的后面。 (嵌入式数据库只存储一个代理实例的数据,因此通常不需要此属性。)与 JDBC 相关的其余配置属性用于自定义创建数据库结构的 SQL 代码,每个数据库表对应一个属性。 例如,imq.persist.jdbc.table.IMQSV35 属性提供用于创建版本表的 SQL 命令,imq.persist.jdbc.table.IMQCCREC35 属性提供用于创建配置更改记录表的 SQL 命令,imq.persist.jdbc.table.IMQDEST35 属性则提供用于创建目的地表的 SQL 命令,等等;有关完整列表,请参见表 14–6。
由于各个数据库系统所要求的具体 SQL 语法不同,因此请务必查看数据库供应商提供的相应文档以了解详细信息。