Sun Java System Messaging Server 6.3 管理指南

22.2 配置 JMQ 通知服务

此节简要介绍了如何使 JMQ 通知插件适合完整的 Message Queue 服务环境。然后,它提供了有关配置 JMQ 通知插件的详细说明。

22.2.1 规划您的 JMQ 通知服务

JMQ 通知插件只是 Message Queue 服务的一部分。邮件传送服务还包括使用邮件的客户端和 Message Queue 基础设施(代理、管理组件等等)。

以下步骤介绍了创建支持 Messaging Server 的 Message Queue 服务应该执行的任务:

  1. 设计通知邮件服务。

    定义 Messaging Server 安装需要的通知邮件。邮件服务开发周期的规划和设计阶段不在本章讨论的范围内。但是,在配置 JMQ 通知插件之前您应回答以下设计问题:

    • 您需要为哪些邮件事件生成通知?有关可用的通知邮件列表,请参见22.3.1 通知邮件

    • 您打算为队列、主题,还是这两者生成邮件?

    • 您打算使用专用 Event Notification Service 和 Message Queue 服务吗?

    这些问题的答案将帮助您决定是配置一个还是多个通知插件,以及决定如何配置每个插件。

  2. 安装、配置和部署 Message Queue 产品。

    有关安装 Message Queue 的信息,请参见《Sun Java System Message Queue Installation Guide》

    有关配置和部署 Message Queue 的信息,请参见《Sun Java System Message Queue 管理指南》

  3. 编写一个或多个将要使用 JMQ 通知邮件的 Message Queue 客户端。

    这些客户端必须符合 Message Queue 客户端 API 的要求。可以从以下路径获得一个客户端源代码的简单示例(用 C 语言编写):


    /opt/SUNWmsgsr/examples/jmqsdk/

    源文件名为 jmqclient.c

    此客户端源代码接收 JMQ 通知邮件(由 libjmqnotify 库中的参数定义)中的邮件。然后,它将邮件发送到 stdout

    有关用 C 或 Java 编写 Message Queue 客户端的信息,请参见 Sun Java System Message Queue Developer's Guide for C ClientsSun Java System Message Queue Developer's Guide for Java Clients

  4. 配置并启用 JMQ 通知插件以生成通知邮件。

    本章的剩余部分介绍如何配置通知插件。

  5. 配置并启动运行时 Message Queue 客户端。

    有关部署运行时 Message Queue 客户端的信息,请参见《Sun Java System Message Queue 管理指南》

Procedure配置 JMQ 通知插件

在这一过程中,您首先配置要生成通知的邮件事件。接下来,指定 Message Queue 需要的信息。最后(步骤 9),通过在插件库名称后指定一个参数来配置插件名称:


'/opt/SUNWmsgsr/lib/libjmqnotify$plug-in_name'

如果没有指定插件名称,则默认使用 jmqnotify

开始之前

您应该安装、配置和部署以下产品:


注 –

以下步骤中将要配置的大部分 configutil 参数是可选的。有关参数默认值列表,请参见表 22–2


  1. 配置通知邮件参数。

    对于每一种想要包含在插件内的通知邮件,请结合使用 local.store.notifyplugin 命令和 configutil 实用程序。

    例如,要为新邮件启用通知,输入:


    configutil -o local.store.notifyplugin.jmqnotify.NewMsg.enable -v 1

    其中 jmqnotify 是插件的名称

    -v 1 为此邮件启用通知。值为 0 将禁用对此邮件的通知。

    有关所有 JMQ 通知邮件的列表,请参见22.3.1 通知邮件

    有关启用 JMQ 通知邮件的 configutil 参数的定义,请参见 Sun Java System Messaging Server Administration Reference 中的第 3 章 "Messaging Server Configuration"。

    有些通知邮件使用多个 configutil 参数启用具有附加功能的邮件。例如,有些邮件可以在通知文本中包含邮件标题。有关如何配置这些邮件的说明,请参见newflags 和 oldflags 属性的语法


    注 –

    您必须为每个配置的插件单独配置参数。

    因此,如果配置两个插件(名为 jmq1jmq2),并且希望为两个插件启用新邮件通知,则必须运行 local.store.notifyplugin 命令两次:


    configutil -o local.store.notifyplugin.jmq1.NewMsg.enable -v 1

    configutil -o local.store.notifyplugin.jmq2.NewMsg.enable -v 1

  2. 指定运行 Message Queue 目标(代理)的主机。

    例如,输入以下命令:


    configutil -o local.store.notifyplugin.jmqnotify.jmqHost -v "127.0.0.1"

    其中 jmqnotify 是插件的名称

    "127.0.0.1" 是 Message Queue 代理主机的 IP 地址。

  3. 指定 Message Queue 代理的端口。

    例如,输入以下命令:


    configutil -o local.store.notifyplugin.jmqnotify.jmqPort -v "7676"

    其中 jmqnotify 是插件的名称

    "7676" 是为 Message Queue 代理指定的端口。

  4. 指定授权为服务生成邮件的 Message Queue 用户的用户 ID 和密码。

    例如,输入以下命令:


    configutil -o local.store.notifyplugin.jmqnotify.jmqUser -v "guest"

    configutil -o local.store.notifyplugin.jmqnotify.jmqPwd -v "%$#a62t&"

    其中 jmqnotify 是插件的名称

    "guest""%$#a62t&" 分别是 Message Queue 用户的用户 ID 和密码。

  5. 配置目的地(主题或队列)类型和邮件将要发送到的目的地的名称。

    按以下步骤操作:

    1. 指定目标是主题还是队列。

      例如,输入以下命令:


      configutil -o local.store.notifyplugin.jmqnotify.DestinationType -v "queue"

      其中 jmqnotify 是插件的名称

      "queue" 指定目标是一个队列。此参数允许的值是 "queue""topic"

    2. 指定目标名称。

      例如,输入以下命令之一:


      configutil -o local.store.notifyplugin.jmqnotify.jmqQueue -v "JES-MS"


      configutil -o local.store.notifyplugin.jmqnotify.jmqTopic -v "JES-MS"

      其中 jmqnotify 是插件的名称

      jmqQueuejmqTopic 标识目标类型。jmqQueuejmqTopic 参数是同义的并且相互排斥;在一个插件中只能使用这两个参数中的一个。

      "JES-MS" 是邮件将要发送到的队列或主题的示例名。

  6. 指定邮件优先级。

    例如,输入以下命令:


    configutil -o local.store.notifyplugin.jmqnotify.Priority -v 3

    其中 jmqnotify 是插件的名称

    -v 3 是指定给此插件生成的邮件的 Message Queue 优先级。

    Priority 的默认值为 4。

  7. 指定 Message Queue 代理保留邮件的时间长度(以毫秒为单位)。

    例如,输入以下命令:


    configutil -o local.store.notifyplugin.jmqnotify.ttl -v 100

    其中 jmqnotify 是插件的名称

    -v 100 指定在发送或放弃某个邮件之前,Message Queue 服务保留邮件 100 毫秒。值为 0 表示邮件永久被保留;不会超时。

  8. 指定邮件持久性。

    例如,输入以下命令:


    configutil -o local.store.notifyplugin.jmqnotify.Persistent -v 1

    其中 jmqnotify 是插件的名称

    -v 1 指定在 Message Queue 服务中使用持久性邮件。允许的值为 1(持久)和 0(非持久)。

  9. 配置插件名称。

    要配置具有默认名称的单个插件,可以输入插件库的全限定名称或者库名称及其插件参数:


    configutil -o local.store.notifyplugin -v /opt/SUNWmsgsr/lib/libjmqnotify


    configutil -o local.store.notifyplugin -v '/opt/SUNWmsgsr/lib/libjmqnotify$jmqnotify'

    其中 libjmqnotify 是库名称,

    jmqnotify 是插件参数的默认名称。

    使用美元符号 ($) 分隔库名称和参数。

    将整个值用单引号引起来('');否则 shell 将解释美元符号。

    默认插件读取的 configutil 参数有以下名称:


    local.store.notifyplugin.jmqnotify.*

    要配置其他插件名称(如 jmq42),请输入以下命令:


    configutil -o local.store.notifyplugin -v '/opt/SUNWmsgsr/lib/libjmqnotify$jmq42'

    jmq42 插件读取的 configutil 参数有以下名称:


    local.store.notifyplugin.jmq42.*

Procedure配置多个插件

  1. 为打算创建的每个插件配置一组单独的 JMQ 通知参数。

    例如,假设您配置了两个插件,名为 jmq1jmq2。假设您想为这两个插件都启用新邮件通知,同时单独为 jmq2 插件启用清除邮件通知。在这种情况下,要运行 local.store.notifyplugin 命令三次,如下所示:


    configutil -o local.store.notifyplugin.jmq1.NewMsg.enable -v 1

    configutil -o local.store.notifyplugin.jmq2.NewMsg.enable -v 1

    configutil -o local.store.notifyplugin.jmq2.PurgeMsg.enable -v 1

    您还必须指定使插件能够与 Message Queue 服务通信的参数。

    有关配置所有通知参数的逐步说明,请参见配置 JMQ 通知插件

  2. 配置插件名称。

    要配置两个名为 jmq1jmq2 的插件,请输入以下命令:


    configutil -o local.store.notifyplugin 
    -v '/opt/SUNWmsgsr/lib/libjmqnotify$jmq1$$/opt/SUNWmsgsr/ \
    lib/libjmqnotify$jmq2'

    在本示例中,运行了两个插件库实例。

    使用美元符号 ($) 分隔库名称和指定插件名称的参数。

    使用两个美元符号 ($$) 分隔第一个插件实例和第二个插件实例。

    将整个值用单引号引起来('');否则 shell 将解释美元符号。

    在本示例中,第一个实例用名为 jmq1 的参数构建其配置:


    local.store.notify.jmq1.*

    第二个实例用名为 jmq2 的参数构建其配置:


    local.store.notify.jmq2.*

22.2.2 使用多个 configutil 参数指定通知邮件

对于大部分通知邮件,您可以通过运行单个 local.store.notifyplugin 命令指定邮件。

但是,以下通知邮件使用(或可以使用)多个 local.store.notifyplugin 命令配置:

  1. NewMsg

  2. UpdateMsg

  3. DeleteMsg

  4. MsgFlags

以下过程介绍了如何设置这些通知邮件。

Procedure配置带有邮件标题和邮件正文的新邮件和更新邮件通知

有新的或更新的电子邮件时,您可以将邮件标题和邮件正文添加到发送的通知邮件文本。

可以选择包括邮件标题还是邮件正文;可以两个功能都包括、仅包括一个功能,或者都不包括。默认情况下发送不带邮件标题和邮件正文的邮件。

  1. 指定新邮件或更新邮件通知:


    configutil -o local.store.notifyplugin.jmqnotify.NewMsg.enable -v 1

    configutil -o local.store.notifyplugin.jmqnotify.UpdateMsg.enable -v 1

    其中 jmqnotify 是插件的名称

    -v 1 为这些邮件启用通知。值为 0 禁用通知。

  2. 用大于 0 的值指定 maxHeaderSize 参数,如下例所示:


    configutil -o local.store.notifyplugin.jmqnotify.maxHeaderSize -v 1024

    其中 jmqnotify 是插件的名称

    1024 是要发送的邮件标题的最大大小。maxHeaderSize 的默认值为 0,表示不随邮件发送标题信息。

  3. 用大于 0 的值指定 maxBodySize 参数,如下例所示:


    configutil -o local.store.notifyplugin.jmqnotify.maxBodySize -v 1024

    其中 jmqnotify 是插件的名称

    5120 是要发送的邮件正文的最大大小。maxBodySize 的默认值为 0,不随邮件发送正文信息。

Procedure配置带有邮件标题的删除邮件通知

在删除电子邮件消息时,您可以将邮件标题添加到发送的通知邮件文本中。

包含邮件标题是可选的。默认情况下发送不带邮件标题的通知。

  1. 在删除电子邮件时发送通知:


    configutil -o local.store.notifyplugin.jmqnotify.DeleteMsg.enable -v 1

    其中 jmqnotify 是插件的名称

    -v 1 为此邮件启用通知。值为 0 禁用通知。

  2. 指定 ExpungeHeaders 参数:


    configutil -o local.store.notifyplugin.jmqnotify.ExpungeHeaders -v 1

    其中 jmqnotify 是插件的名称

    -v 1 使删除邮件通知能够包含邮件标题。ExpungeHeaders 的默认值为 0,禁止删除邮件通知包含标题信息。

    必须配置 ExpungeHeaders 参数启用 DeleteMsg 邮件包含邮件标题的功能。

  3. 用大于 0 的值指定 maxHeaderSize 参数,如下例所示:


    configutil -o local.store.notifyplugin.jmqnotify.maxHeaderSize -v 1024

    其中 jmqnotify 是插件的名称

    1024 是要发送的邮件标题的最大大小。maxHeaderSize 的默认值为 0,表示不随邮件发送标题信息。

22.2.2.1 配置邮件状态更改通知

可以配置一个在电子邮件更改状态的时候发送的通知邮件。

在邮件标志通知中传送的信息

邮件标志通知在状态标志更改时生成,这种更改是因为电子邮件:

发送邮件标志通知时,通知包含以下属性:

此信息包含在两个属性(oldflagsnewflags)中,它们是包含 5 个字符的字符串。

有关这两个属性值的说明,请参见newflags 和 oldflags 属性的语法

邮件标志通知所需的 configutil 参数

要启用邮件标志通知,必须配置以下 configutil 参数:

第一个 MsgFlags 参数启用 IMAP 服务器和消息存储,以标识和跟踪状态标志更改的值,以便在通知邮件中传送此信息。

此参数应用于所有通知插件。因此,如果任何通知插件使用邮件标志通知,您必须启用此参数。如果没有插件使用邮件标志通知,请确保禁用此参数(其默认值)。

第二个参数 *.MsgFlags.enable 允许为某个特定的插件库发送邮件标志通知。


注 –

要为邮件标志启用通知,您必须两个参数都配置。


Procedure在邮件状态标志更改时启用通知

  1. 跟踪状态标志并使邮件标志通知包含状态信息:


    configutil -o local.store.notifyplugin.MsgFlags -v 1

    其中 -v 1 使邮件标志信息能够与邮件标志通知一起发送。值为 0 禁用此通知。

  2. 使邮件标志通知由特定的插件发送:


    configutil -o local.store.notifyplugin.jmqnotify.MsgFlags.enable -v 1

    其中 jmqnotify 是插件的名称

    -v 1 为此插件启用邮件标志通知。值为 0 禁用通知。