Sun Java System Message Queue 3.7 UR1 管理指南

持久性属性

Message QueueTM 支持使用基于文件和基于 JDBC 的模型来存储持久性数据。代理属性 imq.persist.store表 14–4)指定要使用的模型。以下各节介绍了这两种模型的代理配置属性。

表 14–4 全局代理持久性属性

属性 

类型 

默认值 

描述 

imq.persist.store

字符串 

file

持久性数据存储库模型: 

    file:基于文件的持久性


    jdbc:基于 JDBC 的持久性


基于文件的持久性

表 14–5 中列出了与基于文件的持久性相关的代理属性。

表 14–5 基于文件持久性的代理属性

属性 

类型 

默认值 

描述 

imq.persist.file.message.max_record_size

字符串 

1m

要添加到消息存储文件中的消息的最大大小。 

超出此大小的所有消息都将存储到其自身的单独文件中。 

可以使用以下后缀(分别表示字节、千字节或兆字节)来表示该值: 

    b:字节


    k:千字节(1024 字节)


    m:兆字节(1024 x 1024 = 1,048,576 字节)


不带后缀的值用字节表示。 

示例:

    1600:1600 字节


    1600b:1600 字节


    16k:16 千字节(= 16,384 字节)


    16m:16 兆字节(= 16,777,216 字节)


imq.persist.file.destination.message.filepool.limit

整数 

100

目的地文件池中可重复使用的最大空闲文件数。 

超出此限制的空闲文件将被删除。代理将根据需要创建文件或删除超出限制的多余文件。 

此限制越高,代理处理持久性数据的速度越快。 

imq.persist.file.message.filepool.cleanratio

整数 

0

空闲文件池中将保持清除(清空)状态的文件的百分比。 

此值越大,文件池所需的磁盘空间越少,但在操作中清除文件所需的开销越大。 

imq.persist.file.message.cleanup

布尔值 

false

是否在关闭时清除空闲的文件池中的文件? 

将此属性设置为 true 可以节省用于文件存储的磁盘空间,但会降低代理关闭的速度。

imq.persist.file.sync.enabled

布尔值 

false

是否将内存中的状态与物理存储设备同步? 

将此属性设置为 true 可以避免因系统崩溃引起的数据丢失,但性能会有所下降。


注 –

如果为 Message Queue 运行 Sun Cluster 和 Sun Cluster Data Service,请将所有群集节点上的代理的此属性设置为 true


基于 JDBC 的持久性

表 14–6 中列出了与基于 JDBC 的持久性相关的代理属性。给出的示例适用于 DataMirror Mobile Solutions, Inc. 提供的 PointBase® 数据库产品系列。

表 14–6 基于 JDBC 持久性的代理属性

属性 

示例 

描述 

imq.persist.jdbc.brokerid

PointBase 嵌入式版本不需要 

(可选)代理实例标识符

必须是字母数字字符串,不能超过 n - 12 个字符,其中 n 是数据库允许的最大表名长度。

此标识符将附加到数据库表名之后,当多个代理实例使用同一个数据库作为持久性数据存储库时,此标识符可以使数据库表名保持唯一。嵌入式数据库只存储一个代理实例的数据,因此通常不需要该标识符。 

imq.persist.jdbc.driver

com.pointbase.jdbc.jdbcUniversalDriver

用于连接到数据库的 JDBC 驱动程序的 Java 类名

imq.persist.jdbc.opendburl

jdbc:pointbase:embedded:dbName ;

    database.home=
    
       .../instances/
    instanceName/dbstore
    

用于打开现有数据库连接的 URL

imq.persist.jdbc.createdburl

jdbc:pointbase:embedded:dbName ;

    new,database.home=
    
       .../instances/
    instanceName/dbstore
    

(可选)用于创建新数据库的 URL

仅在使用 Message Queue 数据库管理器实用程序 (imqdbmgr) 创建数据库时才需要此属性。

imq.persist.jdbc.closedburl

PointBase 不需要 

(可选)用于关闭数据库连接的 URL

imq.persist.jdbc.user

 

(可选)用于打开数据库连接的用户名(如果需要)

出于安全原因,可以指定该值,而不使用命令行选项 imqbrokerd -dbuserimqdbmgr - u

imq.persist.jdbc.needpassword

 

(可选)数据库是否要求为代理访问输入密码?

如果为 true,则imqbrokerdimqdbmgr 命令将提示输入密码,除非您使用 -passfile 选项指定包含密码的密码文件。

imq.persist.jdbc.password [应仅在密码文件中使用]

 

(可选)用于打开数据库连接的密码

imq.persist.jdbc.table.IMQSV35

CREATE TABLE ${name}

    (STOREVERSION INTEGER NOT NULL,
    
     
    BROKERID VARCHAR(100))
    

用于创建版本表的 SQL 命令

imq.persist.jdbc.table.IMQCCREC35

CREATE TABLE ${name}

    (RECORDTIME BIGINT NOT NULL,
    
     
    RECORD BLOB(10k))
    

用于创建配置更改记录表的 SQL 命令

imq.persist.jdbc.table.IMQDEST35

CREATE TABLE ${name}

    (DID VARCHAR(100) NOT NULL,
    
     
    DEST BLOB(10k),
    
     primaryKey(DID))
    

用于创建目的地表的 SQL 命令

imq.persist.jdbc.table.IMQINT35

CREATE TABLE ${name}

    (CUID BIGINT NOT NULL,
    
     
    INTEREST BLOB(10k),
    
     primaryKey(CUID))
    

用于创建 Interest 表的 SQL 命令

imq.persist.jdbc.table.IMQMSG35

CREATE TABLE ${name}

    (MID VARCHAR(100) NOT NULL,
    
     
    DID VARCHAR(100),
    
     MSGSIZE BIGINT,
    
     
    MSG BLOB(1m),
    
     primaryKey(MID))
    

用于创建消息表的 SQL 命令

MSG 列的默认最大长度为 1 兆字节 (1m)。如果您希望消息超出此长度,请对长度进行相应设置。如果已经创建了这些表,则必须重新创建它们才能更改最大消息长度。

imq.persist.jdbc.table.IMQPROPS35

CREATE TABLE ${name}

    (PROPNAME VARCHAR(100) NOT NULL,
    
     
    PROPVALUE BLOB(10k),
    
     primaryKey(PROPNAME))
    

用于创建属性表的 SQL 命令

imq.persist.jdbc.table.IMQILIST35

CREATE TABLE ${name}

    (MID VARCHAR(100) NOT NULL,
    
     
    CUID BIGINT,
    
     DID VARCHAR(100),
    
     
    STATE INTEGER,
    
     primaryKey(MID, CUID))
    

用于创建 Interest 状态表的 SQL 命令

imq.persist.jdbc.table.IMQTXN35

CREATE TABLE ${name}

    (TUID BIGINT NOT NULL,
    
     
    STATE INTEGER,
    
     
    TSTATEOBJ BLOB(10K),
    
     primaryKey(TUID))
    

用于创建事务表的 SQL 命令

imq.persist.jdbc.table.IMQTACK35

CREATE TABLE ${name}

    (TUID BIGINT NOT NULL,
    
     
    TXNACK BLOB(10k))
    

用于创建事务确认表的 SQL 命令